java課程設計題目及代碼:java大文件上傳插件

我們先來看上傳文件的原理圖:java文件上傳原理

文件上傳流程

上傳的本質就是將客戶端硬碟中的文件,傳送到伺服器端的硬碟中。

客戶端硬碟 –> 客戶端內存 –> 伺服器端內存 –> 伺服器端硬碟

由於文件比較大,所以每次的傳輸都是一部分一部分傳輸的,並不是一次性將文件全部載入到內存中的。我們要做的工作是在伺服器端寫一個接收客戶端發送過來的數據,然後再將數據保存到伺服器的硬碟中。客戶端將文件載入到內存,內存發送到伺服器這個寫步驟是由遊覽器完成的。

文件上傳注意事項:

1、文件上傳只能使用post請求,get請求只能提交普通的字元串(HTTP協議規定的)

2、文件上傳的時候form標籤的enctype屬性值必須是:multipart/form-data

3、引入兩個jre :commons-fileupload-1.3.1 commons-io-2.2

具體代碼如下:

package com.zd.servlet;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet{
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse resp)
			throws ServletException, IOException {
		
		ServletContext servletContext = this.getServletContext();
		
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//設置JVM一次性最大吞吐量
		factory.setSizeThreshold(10240);
		//設置臨時文件目錄
		String temp = servletContext.getRealPath("temp");
		factory.setRepository(new File(temp));
		
		ServletFileUpload upload = new ServletFileUpload(factory);
		upload.setFileSizeMax(50240);
		try {
			List<FileItem> items = upload.parseRequest(request);
			for (FileItem item: items) {
				if(item.isFormField()){
					
				}
				else
				{
					String filePath = servletContext.getRealPath("uploadPath") + "\" + item.getName();
					item.write(new File(filePath));
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	
	
}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/220677.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 12:14
下一篇 2024-12-09 12:15

相關推薦

發表回復

登錄後才能評論