【Java】UploadUtil

本文详细介绍了Java中用于文件上传的工具类UploadUtil,包括其核心功能、使用方法和常见问题。通过实例展示了如何利用UploadUtil进行文件上传操作,并讨论了与安全性、错误处理相关的关键点。

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

package com.copote.common.utils;

import com.copote.common.constant.FileConst;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;

/**
* 文件上传工具类
*/
public class UploadUtil {

/**
 * 将MultipartFile转化为file并保存到服务器上的某地
 */
public static String saveFileFromInputStream(MultipartFile file,String fileName) throws IOException {
	OutputStream os = null;
	InputStream inputStream;
	String url =null;
	inputStream = file.getInputStream();
	String path = FileConst.UPLOAD_DISK + FileConst.UPLOAD_PATH;
	try {
		byte[] bs = new byte[1024*1024];// 1K的数据缓冲
		// 读取到的数据长度
		int len;
		// 输出的文件流保存到本地文件
		File tempFile = new File(path);
		if (!tempFile.exists()) {tempFile.mkdirs();}
		url = tempFile.getPath() + File.separator + fileName;
		os = new FileOutputStream(url);
		// 开始读取
		while ((len = inputStream.read(bs)) != -1) {
			os.write(bs, 0, len);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}finally {
		// 完毕,关闭所有链接
		try {
			if(os != null){
				os.close();
			}
			if(inputStream != null){
				inputStream.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return url;
	//end
}

/**
 * 删除文件
 * @param  path  文件链接路径
 */
public static void deleteFileByPath(String path){
	File file=new File(path);
	if(file.exists()&&file.isFile()){
		file.delete();
	}
}

/**
 * 根据byte数组,生成文件
 * @param bfile 文件数组
 * @param filePath 文件存放路径 C:\Users\test\Desktop\test\
 * @param fileName 文件名称 test.xlsx
 */
public static void byte2File(byte[] bfile,String filePath,String fileName){
	BufferedOutputStream bos=null;
	FileOutputStream fos=null;
	File file=null;
	try{
		File dir=new File(filePath);
		if(!dir.exists() && !dir.isDirectory()){//判断文件目录是否存在
			dir.mkdirs();
		}
		file=new File(filePath+fileName);
		fos=new FileOutputStream(file);
		bos=new BufferedOutputStream(fos);
		bos.write(bfile);
	}
	catch(Exception e){
		System.out.println(e.getMessage());
		e.printStackTrace();
	}
	finally{
		try{
			if(bos != null){
				bos.close();
			}
			if(fos != null){
				fos.close();
			}
		}
		catch(Exception e){
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值