龙空技术网

java文件上传原理

小瓜瓜666 195

前言:

如今看官们对“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();		}					}		}

标签: #java上传服务器 #java文件拷贝的流程是什么 #java上传文件代码 #java接收上传的文件 #java传输文件夹