记录通过request.getInputStream()获取文件并保存到本地失败的问题

背景:

  通过前台上传一个视频,然后再保存到本地。

问题:

  通过request.getInputStream()获取输入流,FileOutputStream输出到本地。代码运行无异常,但是文件打开时错误。提示如图:

  记录通过request.getInputStream()获取文件并保存到本地失败的问题_第1张图片

解决:

  方式一:

  使用request.getPart(String fileName);(适用于单文件)。多文件可用request.getParts();

	Part part = request.getPart("file");
	InputStream is = part.getInputStream();
	File file = new File("C:\\Users\\yyb\\Desktop\\part.mp4");
	FileOutputStream os = new FileOutputStream(file);
	byte[] bb = new byte[1024];
	int ch;
	while ((ch = is.read(bb)) > -1) {
		os.write(bb, 0, ch);
	}
	os.close();
	is.close();

  方式二:

  使用MultipartFile

	public String uploadFile(@RequestParam("test") MultipartFile file) {
		// 1判断文件是否为空
		if (file.isEmpty()) {
			return "文件为空";
		}
		// 2获取文件名
		String fileName = file.getOriginalFilename();
		// 3获取后缀
		String suffixName = fileName.substring(fileName.lastIndexOf("."));
		// 4路径
		String filePath = "E://springboot_fileUpload//";
		File dest = new File(filePath + fileName);
		// 5判断目录是否存在
		if (!dest.getParentFile().exists()) {
			// 不存在,创建
			dest.getParentFile().mkdirs();
		}
		try {
			file.transferTo(dest);
			return "上传成功";
		} catch (IllegalStateException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "上传失败";
	}

 使用这两种方式。保存到本地的文件可以正常打开。

 

 

你可能感兴趣的:(记录问题)