java controller代码
@Controller
@RequestMapping("/file")
public class fileuploadcontroller {
@RequestMapping("/fileupload1")
public String fileupload1(HttpServletRequest request) throws Exception {
System.out.println("fileupload1...");
String path=request.getSession().getServletContext().getRealPath("/upload/");
File file=new File(path);
if(!file.exists()) {
file.mkdirs();
}
DiskFileItemFactory factry=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factry);
//解析requset
List<FileItem> items= upload.parseRequest(request);
for (FileItem item : items) {
if(item.isFormField()) {
}else {
String filename=item.getName();
String uuid=UUID.randomUUID().toString().replace("-", "");
filename=uuid+"_"+filename;
item.write(new File(path,filename));
item.delete();
}
}
return "success";
}
```pom依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
jsp代码
<h3>传统文件上传</h3>
<form action="file/fileupload1" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload" /><br/>
<input type="submit" value="上传" />
</form>
问题: 方法执行成功了,页面也跳转到success界面了
就是在项目里找不到上传的文件,也没有创建新的upload文件夹
求大神看看,,。
你可以先在工程的目录下查看一下有没有新的upload文件夹,如果没有的话,那你到电脑里面的文件里面找到工程保存路径,到里面的target文件夹(你的应该是在target/file下面)下面看看(如下图),再没有的话就只能手动创建了,我也遇到过这个问题,最后手动创建新的upload文件夹就可以了,里面有文件,文件也没有损坏
文件类型问题!!!!!
我也有类似问题,不过我发现我的原因是尾缀为.csv .txt的文件才报错,我的解决办法就是限制文件类型,csv和txt的不能执行操作
String path=request.getSession().getServletContext().getRealPath("/upload/");这个path有问题,
我的target目录下面没有一个工程名的文件夹, 不知道是什么原因
但是我换了下面的path路径就好了
String path="D:\fileUpload\";