开发者社区> 技术小胖子> 正文

java 异步上传文件

简介:
+关注继续查看

我们的java上传文件,需要form同步上传,并且需要设置enctype为multipart/form-data。

如果将form使用ajax异步提交的话,将会报错说enctype不是multipart/form-data类型


但有时候确实又有酱紫的需求,可以实现,需要借助jquery.form.js 插件

插件下载地址为:

http://yun.baidu.com/share/link?shareid=1698628055&uk=2836507213


下面贴出关键性代码


jsp代码为:

<form id= "uploadForm">  
      <p >指定文件名: <input type="text" name="filename" value= ""/></p >  
      <p >上传文件: <input type="file" name="file"/></p>  
      <input type="button" value="上传" onclick="doUpload()" />  
</form> 


<script>
 function doUpload(){
	 var formData = new FormData($( "#uploadForm" )[0]);  
     $.ajax({  
          url: '${pageContext.request.contextPath}/UploadHandleServlet' ,  
          type: 'POST',  
          data: formData,  
          async: false,  
          cache: false,  
          contentType: false,  
          processData: false,  
          success: function (returndata) {  
              alert(returndata);  
          },  
          error: function (returndata) {  
              alert(returndata);  
          }  
     });  
 }
</script>


后台代码不变,和普通form上传代码一样

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
String savePath =request.getSession().getServletContext().getRealPath("/WEB-INF/upload");
 File file = new File(savePath);
 if (!file.exists()) {
	 file.mkdir();
 }
 String message ="";
 try{
	  DiskFileItemFactory factory = new DiskFileItemFactory();
	  factory.setSizeThreshold(1024*100); 
	  factory.setRepository(file);
	  
	  ServletFileUpload upload = new ServletFileUpload(factory);
	  upload.setHeaderEncoding("UTF-8"); 
 List<FileItem> list = upload.parseRequest(request);
 
//正则匹配,过滤路径取文件名  
 String regExp = ".+\\\\(.+)$"; 
 Pattern p = Pattern.compile(regExp);
 
 String fileName="";
 for(FileItem item : list){
	 if(item.isFormField()){
		 String name = item.getFieldName();
         String value = item.getString("UTF-8");
         System.out.println(name + "=" + value);
	 }else{
		 String name = item.getName(); 
		 name = name.substring(name.lastIndexOf("\\")+1);
		  fileName = savePath+"/"+ sdf1.format(new Date()) + "_"+name;  
		 item.write(new File(fileName)); 
	 }
	
 }
  message = "文件上传成功!";
 }catch (Exception e) {
	 message= "文件上传失败!";
     e.printStackTrace();
}



亲测有用




      本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1774543,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java中调用py脚本文件
Java中调用py脚本文件
5 0
java 使用 CSVWriter 库来导出 CSV 文件
在 Java 中,可以使用 CSVWriter 库来导出 CSV 文件。以下是使用 CSVWriter 库导出 CSV 文件的基本步骤: 1. 添加CSVWriter库依赖: 在 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.5.2</version> </dependency> ``` 2. 写入CSV数据: 在代码中,首先需要构造要写入CSV的数据结构,然后通过CSVWriter写入
16 0
Java:命令行/文件的输入输出
Java:命令行/文件的输入输出
21 0
Java:文件io流继承体系文件读取文件写入
Java:文件io流继承体系文件读取文件写入
17 0
java实现文件分片上传并且断点续传
针对第一个问题,如果文件过大,上传到一半断开了,若重新开始上传的话,会很消耗时间,并且你也并不知道距离上次断开时,已经上传到哪一部分了。因此我们应该先对大文件进行分片处理,防止上面提到的问题。
49 0
【java筑基】IO流进阶之文件随机访问、序列化与反序列化
【java筑基】IO流进阶之文件随机访问、序列化与反序列化
26 0
【java筑基】IO流基础之文件的常见操作
【java筑基】IO流基础之文件的常见操作
20 0
Java获取当前项目下的文件或目录物理地址System.getProperty(“user.dir“)
最近在调用虹软API的时候,需要获取驱动的目录,一直放到本地也不是个事,因为一打包在别的PC端运行它就找不到驱动地址了。
35 0
开源 SPL 助力 JAVA 处理公共数据文件(txt \csv \ json \xml \xls)
开源 SPL 助力 JAVA 处理公共数据文件(txt \csv \ json \xml \xls)
17 0
Java打开CSV文件到JTable展示
SwingNode类 :把Java swing组件封装成一个JavaFX的Node,使得Java Swing可以和JavaFX嵌套在一起使用,JavaSwing贼丑,但操作简单,JavaFX的表格组件(TableView等)有点复杂,所以选择嵌套JavaSwing来使用,丑就丑吧
19 0
Java 打开指定文件
Java 打开指定文件
11 0
Java 获取文件的创建时间
首先,我不得不吐槽一下网上的代码,垃圾中的垃圾!打开一个帖子都是一样的,打开一个一样的,不想说些什么了,而且还有的是依靠 cmd dir 命令,服了,要是正在linux里怎么用?代码先这样,还没来得及时间整理,这个代码是我自己琢磨的,希望可以帮助大家。
15 0
【Linux】运行.sh和.java文件
要在Linux上执行Java文件,请按照以下步骤进行操作: 1. 确保您已安装Java运行时环境(JRE)。您可以通过在终端中输入"java -version"来检查它是否已安装。 2. 编写一个简单的Java程序并将其存储为带有.java扩展名的文件。例如,假设我们有一个名为HelloWorld.java的文件并且它包含以下内容:
26 0
开心档之 Java 流 (Stream)、文件 (File) 和 IOJava.io
Java 流(Stream)、文件(File)和 IOJava.io,包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标
23 0
java中替换文件内容
java中替换文件内容
8 0
+关注
技术小胖子
文章
问答
视频
相关课程
更多
相关电子书
更多
JAVA开发手册1.5.0
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多