Java后台接收上传的文件

本文介绍了如何利用Servlet 3.0内置的API进行文件上传操作,无需额外导入外部包。通过示例代码展示了具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

servlet 3.0提供的文件上传的api,不用再导入外部的包了,直接贴代码:

package util;

import java.io.File;
import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;

public class FileUtil {
	public static String fileUpload(HttpServletRequest request, HttpServlet servlet, String fileType) {
		String savePath = null;

                //这里的代码是我为了把文件分类保存到不同的文件夹中
		if (fileType.equals("Video"))
		    savePath = servlet.getServletContext().getRealPath("\\WEB-INF\\upload\\") + "\\" + fileType;
		else
	            savePath = servlet.getServletContext().getRealPath("\\WEB-INF\\upload\\office\\") + "\\" + fileType;

		File file = new File(savePath);
		if (!file.exists() && !file.isDirectory()) {
		    file.mkdir();
		}
		String fileName = null;
		try {
		    Collection<Part> parts = request.getParts();
		    if (parts.size() == 1) {
		        Part part = request.getPart("file");
			String header = part.getHeader("content-disposition");
			util.IPTimeStamp newName = new util.IPTimeStamp(header);//这个类是我自己写的根据时间生成名字的类,为了防止文件上传之后文件名重复
			fileName =newName.getIPTimeRand() + getFileName(header);
			part.write(savePath + File.separator + fileName);
		    } else {
			for (Part part : parts) {
			    String header = part.getHeader("content-disposition");
			    if(header.indexOf("filename") != -1) {
			    util.IPTimeStamp newName = new util.IPTimeStamp(header);
			    fileName =newName.getIPTimeRand() + getFileName(header);
			    part.write(savePath + File.separator + fileName);
			    }
		        }
		    }
		} catch (IOException e) {
		    e.printStackTrace();
		} catch (ServletException e) {
		    e.printStackTrace();
		}
	    return (savePath + "\\" + fileName);
	}


	public static String getFileName(String header) {//这个方法通过header获取文件的名字
	    String fileName = null;
	    fileName = header.substring(header.indexOf("filename") + 2 + "filename".length(), header.length() - 1);
	    return fileName;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值