Spring Multipart工作原理(文件上传到服务器)

[b]Multipart工作原理[/b]


按照Multipart规定的格式将文件名和文件内容在请求中发送到服务器中

服务器从请求流中得到文件名和文件内容放入到Multipart定义的类中,
服务器处理请求中再在服务器生成相关的文件目录,并将内容保存到服务器中去


[b]Spring applicationContext.xml配置文件:[/b]
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="100000"/>
</bean>



[b]单文件方式实现:[/b]
[b]HTML:[/b]
<form action="http://localhost:8080/v1/TestUploadImage" method="post" id="iconForm" enctype="multipart/form-data">
<table>
<tr>
<td>头像</td>
<td><input id="iconImg" name="iconImg" type="file"/></td>
<td><input type="submit" value="上传"/></td>
</tr>
</table>
</form>



[b]JAVA:[/b]
public static String uploadFile(String uploadDir, MultipartFile file, Boolean existReplace) {
String logString = "FileIOUtils uploadFile : ";

String returnMsg = null;

String fileName = file.getOriginalFilename();
logger.info(logString + "fileName == " + fileName);

File targetFile = new File(uploadDir, fileName);
logger.info(logString + "targetFile == " + targetFile);

// 文件存在
if (!targetFile.exists()) {
logger.info(logString + "targetFile is not exist");
// 新建文件目录
targetFile.mkdirs();
} else {
logger.info(logString + "targetFile is exist");
if (!existReplace) {
logger.info(logString + "existReplace is false");
returnMsg = "exist";
return returnMsg; // 存在不进行替换,直接返回true
}
}

// 保存文件
try {
file.transferTo(targetFile);
} catch (Exception e) {
logger.error(logString + "targetFile save fail == " + e);
returnMsg = "false";
return returnMsg;
}
returnMsg = "true";
logger.info(logString + "returnMsg == " + returnMsg);
return returnMsg;
}
}


[b]方法1:[/b]
@RequestMapping(value = "/TestUploadImage", produces = "text/plain;charset=UTF-8")
public @ResponseBody String iconUpload(@RequestParam(value = "iconImg") MultipartFile iconImg,HttpServletRequest request,String aas ){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
String fileName=multipartFile.getOriginalFilename();
if (fileName==null){
System.out.println("fileName==null");
}

if (fileName==""){
System.out.println("fileName==''");
}

String tempfilename;
if (System.getProperty("os.name").equals("Linux")) {
tempfilename = "/opt/mcloudStat/";
} else {
tempfilename = "D:\\testImage";
}

returnMsg = FileIOUtils.uploadFile(tempfilename,multipartFile,false);
return returnMsg;
}


[b]方法2:[/b]
@RequestMapping(value = "/TestUploadImage", produces = "text/plain;charset=UTF-8")
public @ResponseBody String iconUpload(@RequestParam(value = "iconImg") MultipartFile iconImg,HttpServletRequest request,String aas ){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String,MultipartFile> fileMap =multipartRequest.getFileMap();

String returnMsg = null;
for(String key:fileMap.keySet()){
System.out.println("key == " + key);

if(key.equals("iconImg")){
MultipartFile multipartFile = fileMap.get(key);

String fileName=multipartFile.getOriginalFilename();

if (fileName==null){
System.out.println("fileName==null");
}

if (fileName==""){
System.out.println("fileName==''");
}

System.out.println("fileName == " + fileName);

String tempfilename;
if (System.getProperty("os.name").equals("Linux")) {
tempfilename = "/opt/mcloudStat/";
} else {
tempfilename = "D:\\testImage";
}

returnMsg = FileIOUtils.uploadFile(tempfilename,multipartFile,false);
}
}
return returnMsg;
}



[b]多文件方式实现:[/b]
[b]HTML:[/b]
<form action="http://localhost:8080/v1/TestUploadImage" method="post" id="iconForm" enctype="multipart/form-data">
<table>
<tr>
<td>头像</td>
<td><input id="iconImg" name="iconImg" type="file"/></td>
<td><input id="iconImg2" name="iconImg" type="file"/></td>//命字要一样,方便组成数组,会与排版顺序进行传入
<td><input type="submit" value="上传"/></td>
</tr>
</table>
</form>



[b]JAVA:[/b]
[b]方法1:[/b]
@RequestMapping(value = "/TestUploadImage", produces = "text/plain;charset=UTF-8")
public @ResponseBody String iconUpload(@RequestParam(value = "iconImg") MultipartFile[] iconImg,HttpServletRequest request,String aas ){
String returnMsg = null;
int iconImgLen = iconImg.length;
System.out.println("iconImgLen == " +iconImgLen);
for(int i=0;i<iconImgLen;i++){
String fileName=iconImg[i].getOriginalFilename();

if (fileName==null){
System.out.println("fileName==null");
}

if (fileName==""){
System.out.println("fileName==''");
}

System.out.println("fileName == " + fileName);

String tempfilename;
if (System.getProperty("os.name").equals("Linux")) {
tempfilename = "/opt/mcloudStat/";
} else {
tempfilename = "D:\\testImage";
}

returnMsg = FileIOUtils.uploadFile(tempfilename,iconImg[i],false);
}
return returnMsg;
}



[b]方法2:[/b]参考单单文方式实现方法2,不过HTML文件中的name要不一样

thumbnails可实现图片的压缩功能(PictureUtils.java)
[url]http://blog.csdn.net/yaohucaizi/article/details/9718861[/url]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值