springmvc文件下载(记录)

/**
	 * 根据fullid 下载文件
	 * 
	 * @param fullid
	 *            全文库的id
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/download", method = RequestMethod.GET)
	public ResponseEntity<InputStreamResource> downloadModel(@RequestParam(value = "fullid") String fullid)
			throws IOException {

		FullTextLibrary fullTextLibrary = fullTextLibraryRepository.findOne(fullid);

		String title = fullTextLibrary.getTitle();
		// String author=fullTextLibrary.getAuthor();
		// String press=fullTextLibrary.getPress();
		String fileName = title + ".pdf";
		System.out.println(fileName);
		String fileId = fullTextLibrary.getFileId();
        //文件存在mongo  使用fs获取
		Query query = new Query(Criteria.where("_id").is(new ObjectId(fileId)));
		GridFSDBFile file = gridFsOps.findOne(query);
		InputStream in = file.getInputStream();
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        //下载文件名乱码问题
		fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");

		headers.setContentDispositionFormData("attachment", fileName);
		return ResponseEntity.ok().contentLength(file.getLength())
				.cacheControl(CacheControl.maxAge(3600, TimeUnit.SECONDS))
				.contentType(MediaType.APPLICATION_OCTET_STREAM).headers(headers).body(new InputStreamResource(in));

	}

页面展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值