利用Ajax上传二进制文件

来源:互联网 发布:jquery 2.1.1.min.js 编辑:程序博客网 时间:2024/05/16 06:01

网页文件

<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1"><title>利用Ajax上传二进制文件</title><script type="text/javascript">    window.onload = function() {        var file = null,            fileName = null,            xhr = null;        function upload(url) {            var fileInput = document.getElementById("fileInput");            fileInput.addEventListener("change", function() {                file = this.files[0];                fileName = file.name;                xhr = new XMLHttpRequest();                xhr.open("POST", url);                // 这里会自动设置好请求头                xhr.send(file); // 直接上传二进制文件            }, false);        }        var uploadBtn = document.getElementById("upload");        uploadBtn.onclick = function() {            upload("/Ajax/FileUploader");        };    };</script></head><body>    <input type="file" id="fileInput" multiple>    <input type="button" id="upload" value="click to upload"></body></html>

后台简单处理

package cn.chd.fileupload;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class FileUploader */public class FileUploader extends HttpServlet {    private static final long serialVersionUID = 1L;    int count = 1;    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        String path = this.getServletContext().getRealPath("/upload");        InputStream in = request.getInputStream();        String contentType = request.getContentType();        // 这里是为了获取文件扩展名,有点小问题        String extention = contentType.substring(contentType.indexOf('/') + 1);        OutputStream out = new FileOutputStream(path + "\\" + (count++) + "." + extention);        int len = -1;        byte[] buffer = new byte[1024];        while ((len = in.read(buffer)) != -1) {            out.write(buffer, 0, len);        }        in.close();        out.close();    }    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doGet(request, response);    }}
0 0
原创粉丝点击