springboot上传下载

package com.oa.org.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.mortbay.log.Log;
import org.springframework.web.multipart.MultipartFile;

public class FileUtil {
	public static Map upload(MultipartFile file, String filePath) {
		Map<String, String> resultMap = new HashMap<String, String>();
		if (file.isEmpty()) {
			resultMap.put("CODE", "500");
			resultMap.put("MESSAGE", "文件不能为空");
			return resultMap;
		}
		// 获取文件名
		String fileName = file.getOriginalFilename();
		String suffixName = fileName.substring(fileName.lastIndexOf("."));
		File dest = new File(filePath + fileName);

		if (!dest.getParentFile().exists()) {
			dest.getParentFile().mkdirs();
		}
		try {
			file.transferTo(dest);
			resultMap.put("CODE", "200");
			resultMap.put("MESSAGE", "文件上传成功");
			return resultMap;
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		resultMap.put("CODE", "500");
		resultMap.put("MESSAGE", "文件上传失败");
		return resultMap;
	}

	public static void downloadFile(String fileName, String filePath, HttpServletResponse response) {

		BufferedInputStream bis = null;
		OutputStream os = null;
		try {
			//转换编码防止文件名出现乱码
			String filesName = new String(fileName.getBytes("gb2312"), "ISO8859-1");
			response.setHeader("content-type", "application/octet-stream");
			response.setContentType("application/octet-stream");
			response.setHeader("Content-Disposition", "attachment;filename=" + filesName);
			response.setContentType("application/x-msdownload");
			response.setContentType("application/vnd.ms-pdf;charset=utf-8");
			response.setCharacterEncoding("utf-8");
			byte[] buff = new byte[1024];
			File f=new File(filePath + fileName);
			if(!f.exists()){
				Log.info("下载文件错误,文件不存在");
				return;
			}
			os = response.getOutputStream();
			bis = new BufferedInputStream(new FileInputStream(f));
			int i = bis.read(buff);
			while (i != -1) {
				os.write(buff, 0, buff.length);
				os.flush();
				i = bis.read(buff);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bis != null) {
				try {
					bis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值