文件的上傳於下載--基礎版

文件的上傳案例(下載待定)

  • 前端
    • 上傳
<form action="upload" method="post" enctype="multipart/form-data">
	<input type="file" name="file">//文件上傳
	<input type="submit" value="上傳">
</form>
  • 後端

    • 上傳

      package com.qianfeng.servlet;
      
      import java.io.File;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.InputStream;
      import java.io.OutputStream;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.MultipartConfig;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import javax.servlet.http.Part;
      
      
      @WebServlet("/upload")
      @MultipartConfig
      public class UploadServlet extends HttpServlet{
      
      	@Override
      	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		request.setCharacterEncoding("utf-8");
      		response.setContentType("text/html;charset=utf-8");
      		Part part = request.getPart("files");//獲取上傳的文件
      		String text=part.getHeader("Content-Disposition");//獲取上傳的文件名
      		//form-data; name="files"; filename="作業.txt"
      		 String n = text.split(";")[2].split("=")[1];
      		String  filename=n.substring(1,n.length()-1);
      	    InputStream ipt = part.getInputStream();//把上傳的文件放入輸入流中
      	    byte[] b=new byte[1024];
      	    String realPath = request.getServletContext().getRealPath("/upload");
      	    System.out.println(realPath);
      	    File f=new File(realPath);//確定上傳地址
      	    File f1=new File(f,filename);//確定上傳到指定地址的文件並已filename命名
      	    if(!f.exists()) {//沒有路徑創建路徑
      	    	f.mkdir();
      	    }
      	    
      	    FileOutputStream opt=new FileOutputStream(f1);//創建文件輸出流--指定上傳後的文件
      	    int len=0;
      	  //讀取輸入流中的內容,然後用設置的緩存字符區B去規定每次寫出的輸出流的大小,
      	  //去一次次的輸出流的內容,最後形成文件
      	    while((len=ipt.read(b))!=-1) {
      	    	opt.write(b,0,len);
      	    }
      	    //關閉
      	    opt.close();
      	    ipt.close();
      	}
      }
      
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章