Java 文件操作 上传下载 删除

上传文件

Java 实体层

public class File {
	private String  serialNumber;		// 序号
	private String fileName;		// 附件名称
	private String filePath;		// 附件路径
	private String type;		//附件type
	private String foreignkey;		// 外键
   get set 就不写了
	}

控制层

@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
	/**
	 * 上传
	 * @param uploadFiles
	 * @param file
	 * @param request
	 * @param response
	 * @throws Exception
	 */
	@RequestMapping(value = "fileUpload", method = RequestMethod.POST, produces = "text/plain;charset=UTF-8")
	public void fileUpload(File uploadFiles, String foreignkey,@RequestParam("fileData") CommonsMultipartFile file,HttpServletRequest request, HttpServletResponse response)throws Exception {
		// 设置文件保存的本地路径  onlysign外键
		//获取上传文件的.后面的后缀
		String prefix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
		String realPath =Global.getUserfilesBaseDir()+ "\\存放地址\\" + foreignkey;
		String fileName = java.util.UUID.randomUUID().toString() + prefix;
		uploadFiles.setFilePath("\\存放地址\\" + foreignkey+ "\\" + fileName);// 附件路径
		uploadFiles.setFileNamec(fileName);// 附件路径
		uploadFiles.setForeignkey(foreignkey);
		FileService.save(uploadFiles);// 保存  把数据存入到数据库  简单的insert
		FileUtils.saveFile(file, realPath + "\\" + fileName);		
	}

工具类

public class FileUtils extends org.apache.commons.io.FileUtils {
public static void saveFile(MultipartFile file, String fileName)
			throws IllegalStateException, IOException {
		if (!file.isEmpty()) {
			// 转存文件
			FileUtils.createDirectory(fileName);//创建文件目录
			file.transferTo(new File(fileName));
			file = null;
		}
	}
	/**
	 * 创建目录
	 * @param descDirName 目录名,包含路径
	 * @return 如果创建成功,则返回true,否则返回false
	 */
	public static boolean createDirectory(String descDirName) {
		String descDirNames = descDirName;
		if (!descDirNames.endsWith(File.separator)) {
			descDirNames = descDirNames + File.separator;
		}
		File descDir = new File(descDirNames);
		if (descDir.exists()) {
			log.debug("目录 " + descDirNames + " 已存在!");
			return false;
		}
		// 创建目录
		if (descDir.mkdirs()) {
			log.debug("目录 " + descDirNames + " 创建成功!");
			return true;
		} else {
			log.debug("目录 " + descDirNames + " 创建失败!");
			return false;
		}

	}
	}

判断文件是否存在

/**
	 * 判断文件是否存在
	 * 
	 * @param path
	 * @param model
	 */
	@ResponseBody
	@RequestMapping(value = "getExists")
	public AjaxJson getExists(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		AjaxJson json = new AjaxJson();	
		String fileName = request.getParameter("fileName");//从前段获取文件名称
		String foreignkey= request.getParameter("foreignkey");//获取外键
		//Global.getUserfilesBaseDir() 获取更目录
		String filePath =  Global.getUserfilesBaseDir() + "\\文件地址\\" + foreignkey+ "\\" + fileName;		
		File file = new File(filePath);
		if(file.exists()){
			json.setSuccess(true);
			return json;
		}else{
			json.setSuccess(false);
			json.setMsg("附件不存在");
			return json;
		}
		
	}

文件下载

/**
	 * 下载文件
	 * 
	 * @param path
	 * @param model
	 */
	@RequestMapping(value = "downLoad")
	public void downLoad(Model model, HttpServletRequest request,
			HttpServletResponse response, String fileName) {
		//fileName获取下载的文件名称
		String filePath =  Global.getUserfilesBaseDir() + "\\文件地址\\" + fileName;
		// String filePath = "test.pdf";
		//response.reset() 清除首部的空白行
		response.reset();
		response.resetBuffer();//头和状态码没有清除
		// 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
		response.setContentType("multipart/form-data");
		// 2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)
		response.setHeader("Content-Disposition", "attachment;fileName="+fileName);
		ServletOutputStream out;
		// 通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
		File file = new File(filePath);
		try {
			FileInputStream inputStream = new FileInputStream(file);

			// 3.通过response获取ServletOutputStream对象(out)
			out = response.getOutputStream();

			int b = 0;
			byte[] buffer = new byte[inputStream.available()];
			while ((b = inputStream.read(buffer)) != -1) {
				// 4.写到输出流(out)中
				out.write(buffer, 0, b);
			}
			inputStream.close();
			out.close();
			out.flush();
			out = null;
			response.flushBuffer();// 不可少
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

查看文件

/**
	 * 浏览附件页面
	 * 
	 * @param path
	 * @param model
	 */
	@RequestMapping(value = "lookFile")
	public void lookFile(Model model, HttpServletRequest request,
			HttpServletResponse response) {
		// 文件保存路径
		String realPath =  Global.getUserfilesBaseDir() + "\\文件地址\\";
		String fileName = request.getParameter("fileName");
		// 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
		response.setContentType("multipart/form-data");
		// 2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)
		response.setHeader("Content-Disposition", "attachment;fileName="
				+ fileName);
		ServletOutputStream out;
		// 通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
		File file = new File(realPath + fileName);
		try {
			FileInputStream inputStream = new FileInputStream(file);

			// 3.通过response获取ServletOutputStream对象(out)
			out = response.getOutputStream();

			int b = 0;
			byte[] buffer = new byte[inputStream.available()];
			while ((b = inputStream.read(buffer)) != -1) {
				// 4.写到输出流(out)中
				out.write(buffer, 0, b);
			}
			inputStream.close();
			out.close();
			out.flush();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

删除文件

/**
	 * 
	 * 删除单个文件
	 * 
	 * @param fileName 被删除的文件名
	 * @return 如果删除成功,则返回true,否则返回false
	 */
	public static boolean deleteFile(String fileName) {
		File file = new File(fileName);
		if (file.exists() && file.isFile()) {
			if (file.delete()) {
				log.debug("删除文件 " + fileName + " 成功!");
				return true;
			} else {
				log.debug("删除文件 " + fileName + " 失败!");
				return false;
			}
		} else {
			log.debug(fileName + " 文件不存在!");
			return true;
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值