詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)
更新時間:2017年02月28日 09:39:34 作者:JustCode
本篇文章主要介紹了詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
先附上圖片上傳的代碼
jsp代碼如下:
<form action="${path}/upload/uploadPic.do" method="post" enctype="multipart/form-data">
<div>

<input type="file" id="input-image" name="input-image">
<input id="input-relative-path" name="imgs" type="hidden" >
<input id="input-last-path" type="hidden">
<input type="submit" value="上傳圖片">
</div>
</form>
controller代碼:通過spring的方式實現(xiàn)
@Controller
@RequestMapping("/upload")
public class UploadController extends BaseController {
@RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
@LoginCheck
public void uploadPic(HttpServletRequest request, PrintWriter out, String lastRealPath) throws IOException {
// 將當前上下文初始化給CommonsMultipartResolver
CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 檢查form中是否有enctype="multipart/form-data"
if (resolver.isMultipart(request)) {
// 強制轉(zhuǎn)化request
MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
// 從表單獲取input名稱
Iterator<String> iterable = req.getFileNames();
// 存在文件
if (iterable.hasNext()) {
String inputName = iterable.next();
// 獲得文件
MultipartFile mf = req.getFile(inputName);
byte[] mfs = mf.getBytes();
// 定義文件名
String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
Random random = new Random();
for (int i = 0; i < 3; i++) {
fileName = fileName + random.nextInt(10);
}
// 獲得后綴名
String oriFileName = mf.getOriginalFilename();
String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));
// 上傳圖片到本地
String localPath = "/Users/ZR/Desktop/webPro/console/src/main/webapp/image/" + fileName + suffix;
mf.transferTo(new File(localPath));
// 獲取圖片的寬高
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(new File(localPath)));
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
// 獲取文件大小
long size = mf.getSize();
}
}
}
}
spring-mvc.xml代碼:
<!-- 文件上傳的視圖解析器,id值是固定的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1024000"/> <!-- 其他屬性 --> </bean>
功能的實現(xiàn)其實很簡單,但是對于初學者還是需要注意如下幾個點
- form上的enctype="multipart/form-data"不能忘記。
- <input type="file" onchange="submitUpload()" id="input-image" name="input-image"> 的name標簽可以隨便取名,但是不能忽略,否則Iterator<String> iterable = req.getFileNames();這邊獲取的集合將為空。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring Boot高可用限流三種實現(xiàn)解決方案
限流是對某一時間窗口內(nèi)的請求數(shù)進行限制,保持系統(tǒng)的可用性和穩(wěn)定性,本文就介紹了Spring Boot高可用限流三種實現(xiàn)解決方案,具有一定的參考價值,感興趣的可以了解一下2023-08-08
SpringBoot實戰(zhàn):Spring如何找到對應轉(zhuǎn)換器優(yōu)雅使用枚舉參數(shù)
這篇文章主要介紹了SpringBoot實戰(zhàn)中Spring是如何找到對應轉(zhuǎn)換器優(yōu)雅的使用枚舉參數(shù),文中附有詳細的實例代碼有需要的朋友可以參考下,希望可以有所幫助2021-08-08
Mybatis foreach用法解析--對于list和array
這篇文章主要介紹了Mybatis foreach用法解析--對于list和array,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

