<form accept-charset="UTF-8" enctype="multipart/form-data" action="insertFood.do" method="post">
<input type="file" value="" name="file" multiple="true">
<button type="submit" >新增</button>
</form>
servlet
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.FileRenamePolicy;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//重命名策略 , 不管用 , 不知道为什么.
FileRenamePolicy renamePolicy = new MyFileRenamePolicy();
//传入文件地址, 文件就被保存到本地了. 这里可以传入重命名策略.
//保存位置在这里一次到位.
MultipartRequest m = new MultipartRequest(request, filepath, Config.maxSize);
file = m.getFile("file");
//给文件重命名
String filename = new String(file.getName().getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
File newFile = new File(filepath, filename);
boolean b = file.renameTo(newFile);
file = newFile;
}
spring
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@RequestMapping("/insertFood.do")
public String insertFood(Food food, HttpServletRequest request) throws Exception {
//将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//检查form中是否有enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
//将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
//获取multiRequest 中所有的文件名
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
//一次遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next().toString());
if (file != null) {
path = Config.uploadImgLocation + file.getOriginalFilename();
System.out.println(path);
//上传
file.transferTo(new File(path));
path = file.getOriginalFilename();
}
}
}
}
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize" value="104857600"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
测试不管
@RequestMapping("upload")
public PictrueResult uplodPic(MultipartFile uploadFile) {
String fileName = uploadFile.getOriginalFilename();
fileName = UUID.randomUUID().toString() + fileName;
File picFile = new File("D:\\shopImg\\" + fileName);
try {
uploadFile.transferTo(picFile);
} catch (IOException e) {
e.printStackTrace();
return new PictrueResult(1, null, "上传失败");
}
return new PictrueResult(0, "pic\\"+fileName, "上传成功");
}
@Value("${FASTDFS-BASE-URL}")
private String imgUrl;
@RequestMapping("/pic/upload")
@ResponseBody
public String uploud(MultipartFile uploadFile){
// public PictrueResult uploud(MultipartFile uploadFile){
PictrueResult res = new PictrueResult();
try {
FastDFSClient client = new FastDFSClient("classpath:client.conf");
String fileId = client.uploadFile(uploadFile.getBytes());
res.setError(0);
res.setUrl(imgUrl+fileId);
} catch (Exception e) {
e.printStackTrace();
res.setError(1);
res.setMessage("图片上传失败");
}
// return res;
return JsonUtils.objectToJson(res);
}
评论区