利用Ajax上传二进制文件

前端之家收集整理的这篇文章主要介绍了利用Ajax上传二进制文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

网页文件

<!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="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,IOException {
        doGet(request,response);
    }

}

猜你在找的Ajax相关文章