文件的上傳案例(下載待定)
- 前端
- 上傳
<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(); } }
-