js上传文件 java后台接收文件

来源:互联网 发布:无损音质软件 编辑:程序博客网 时间:2024/06/05 15:42

1、前端向后台传送文件的过程其实就是,前端将文件流传给后台,后台接收文件流,然后将其写到后台服务器上。处理文件时,后台程序只需要读取服务器上的文件即可。

2、需要引入两个jar包:commons-fileupload-1.3.1.jar和commons-io-2.4.jar。


html代码:

<div class="input-chunk">    <div>输入文件:</div>    <input type="file" value="选择文件" id="upload-file">    <br>    <a id="start-upload" href="javascript:void(0);" onclick="uploadFile();">开始上传</a></div>


js代码:

function uploadFile(){    var fileObj = document.getElementById("upload-file").files[0]; // 获取文件对象var FileController = "entityServlet1"; // 接收上传文件的后台地址 if(fileObj){alert(fileObj); // FormData 对象         var form = new FormData();         form.append("file", fileObj);// 文件对象         // XMLHttpRequest 对象         var xhr = new XMLHttpRequest();         xhr.open("post", FileController, true);         xhr.onload = function () {             alert(xhr.responseText);         };         xhr.send(form);            }else{alert("未选择文件");}}


Java Servlet代码:

import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class EntityServlet1 extends HttpServlet {private static final long serialVersionUID = 1L;private String uploadPath = "D:\\temp"; // 上传文件的目录File tempPathFile;// 重写doPost方法,处理事件识别请求protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {try {// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Set factory constraintsfactory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kbfactory.setRepository(tempPathFile);// 设置缓冲区目录// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Set overall request size constraintupload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MBList<FileItem> items = upload.parseRequest(request);// 得到所有的文件Iterator<FileItem> i = items.iterator();while (i.hasNext()) {FileItem fi = (FileItem) i.next();String fileName = fi.getName();if (fileName != null) {File fullFile = new File(new String(fi.getName().getBytes(), "utf-8")); // 解决文件名乱码问题File savedFile = new File(uploadPath, fullFile.getName());fi.write(savedFile);}}System.out.print("upload succeed");} catch (Exception e) {}}}




6 0