文件上传

//前端
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<!--action表示要将表达数据交给那个程序处理-->
    <form action="/MyWeb_war_exploded/Servlet" method="post" enctype="multipart/form-data">
      <input type="file" name="myfile">
        <input type="submit" value="上传文件">
    </form>
</body>
</html>

//Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.*;
import java.util.UUID;

@WebServlet(name = "Servlet", value = "/Servlet")
@MultipartConfig //表示当前Servlet可以接受前端文件上传
public class Servlet extends HttpServlet {
    //处理Get请求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");//设置响应数据的编码方式
        request.setCharacterEncoding("UTF-8");//设置请求编码
        PrintWriter pw=response.getWriter();
        pw.print("<head><meta charset=\"UTF-8\"><meta http-equiv=\"refresh\" content=\"3;url=index.html\"></head>");

        Part part=request.getPart("myfile");//接收上传的文件

        //处理文件名代码段
        String fileName=part.getSubmittedFileName();//获取上传的文件名
        //获取文件名的后缀
        String suffix=fileName.substring(fileName.lastIndexOf("."),fileName.length());//从文件名的点到最后结尾
        System.out.println("文件名:"+suffix);
        //UUID获取一个随机的ID信息,创建一个写入服务器文件的文件名称
        String newFileName=UUID.randomUUID()+suffix;
        //获取upload在服务器里真实路径
        String serverPath=request.getServletContext().getRealPath("upload");
        //创建服务器的文件对象
        FileOutputStream fos=new FileOutputStream(serverPath+"/"+newFileName);
        System.out.println("服务器的路径:"+serverPath);

        //处理文件上传代码段
        InputStream is=part.getInputStream();
        byte[] b=new byte[1024];//存放文件的byte数组
        int length=is.read(b);
        while (length!=-1){
            fos.write(b,0,length);//写入到服务器
            length=is.read(b);
        }
        pw.print("文件上传成功-3秒后返回页面");
        fos.close();
        is.close();
    }

    //处理Post请求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}
文章作者: pymdv
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 屠龙少年
Java手记 文件上传
喜欢就支持一下吧