欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java大文件上传插件(java课程设计题目及代码)

程序员文章站 2023-11-22 18:50:46
我们先来看上传文件的原理图:文件上传流程上传的本质就是将客户端硬盘中的文件,传送到服务器端的硬盘中。客户端硬盘 –> 客户端内存 –> 服务器端内存 –...

我们先来看上传文件的原理图:

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();
		}
		
		
	}
	
	
}