..._multipartfile.transferto(file)">
赞
踩
今天看到layui的文件上传的控件,就尝试了一下。简单创建了一个SpringMVC项目。记得在配置文件中注入以下Bean。
<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设定文件上传的最大值为5MB,5*1024*1024 -->
<property name="maxUploadSize" value="5242880"></property>
<!-- 设定文件上传时写入内存的最大值,如果小于这个参数不会生成临时文件,默认为10240 -->
<property name="maxInMemorySize" value="40960"></property>
<!-- 上传文件的临时路径 -->
<property name="uploadTempDir" value="fileUpload/temp"></property>
<!-- 延迟文件解析 -->
<property name="resolveLazily" value="true"/>
</bean>
我很懒,这些属性都没有配置,就注册了Bean。
接下来是我出错的地方。先上Controller代码,前台通过Layui的文件上传模块上传文件。
@ResponseBody
@RequestMapping("/upload")
public Map upload(HttpServletRequest request,MultipartFile file){
HashMap<String,String> map=new HashMap();
if (!file.isEmpty()) {
try {
// getOriginalFilename()是包含源文件后缀的全名
String filePath = "D:/upload/test/"+file.getOriginalFilename();
System.out.println(filePath);
File saveDir = new File(filePath);
if (!saveDir.getParentFile().exists())
saveDir.getParentFile().mkdirs();
file.transferTo(saveDir);
map.put("res","上传成功");
return map;
} catch (Exception e) {
e.printStackTrace();
}
}
map.put("res","上传失败");
return map;
}
transferTo方法中传递的file如果是路径的话,那么它会将最后一层路径当做文件名,没有后缀的那种。此时重命名这个文件,更改成和上传文件一致的后缀那么就可以打开了。
比如我将
String filePath = "D:/upload/test/"+file.getOriginalFilename();
1
改成
String filePath = "D:/upload/test";
1
运行之后打开文件发现这样的:
在这里插入图片描述
transferTo将我想作为文件夹的test当做文件名了。我加个后缀.jpg
在这里插入图片描述
和上传的文件一致。
最后个人理解为传入的File参数是应该包含文件而不是文件路径,transferTo()并不会将文件转存到文件夹下。
————————————————
版权声明:本文为CSDN博主「cliche_tune」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cliche_tune/article/details/102901241
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。