//下载
@RequestMapping("/attachmentDownload")
@ResponseBody
public ResponseEntity<byte[]> attachmentDownload(HttpServletRequest request, HttpServletResponse response,
HttpSession session, String attachmentId) {
logger.info("下载附件信息");
Map<String, Object> params = new HashMap<String, Object>();
// 附件id
AttachmentEntity attachmentEntity = attachmentService.selectByID(attachmentId);
// 附件名称
String attachmentName = attachmentEntity.getAttachmentName();
// 附件路径
String attachmentPath = attachmentEntity.getAttachmentUuid();
String filePath = "";
....................................
File sourcefile = new File(filePath + File.separator + attachmentPath);
try {
if (sourcefile.exists()) {
HttpHeaders headers = new HttpHeaders();
String fileName = new String(attachmentName.getBytes("UTF-8"), "iso-8859-1");
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(sourcefile), headers,
HttpStatus.CREATED);
}
} catch (IOException e) {
// TODO Auto-generated catch block
logger.error("附件下载异常!" + e.getMessage());
e.printStackTrace();
}
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
//预览
@RequestMapping("/attachmentView")
@ResponseBody
public void attachmentView(HttpServletRequest request, HttpServletResponse response, HttpSession session,
String attachmentId) {
logger.info("文件预览");
response.setCharacterEncoding("gbk");
// 查询附件信息
AttachmentEntity attachmentEntity = attachmentService.selectByID(attachmentId);
// 文件路径
String filePath =
PropertiesUtil.getRootPath(DataUtil.FILEPATH) + File.separator + getUserCompanyNo(request) + File.separator
+ attachmentEntity.getLoanContractNo();
String fileTruePath = filePath + File.separator + attachmentEntity.getAttachmentUuid();
if (new File(fileTruePath).exists()) {
FileInputStream fis = null;
OutputStream os = null;
try {
fis = new FileInputStream(fileTruePath);
os = response.getOutputStream();
int count = 0;
byte[] buffer = new byte[1024 * 8];
while ((count = fis.read(buffer)) != -1) {
os.write(buffer, 0, count);
os.flush();
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} finally {
try {
fis.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private void writeFile(MultipartFile files, AttachmentEntity attachment, JSONObject json, String araNo)
throws Exception {
// TODO Auto-generated method stub
logger.info("写入文件信息");
String filePath =
PropertiesUtil.getRootPath(DataUtil.FILEPATH) + File.separator + araNo + File.separator
+ attachment.getLoanContractNo();
String originalFilename = files.getOriginalFilename();
File rootFile = new File(filePath);
String suffix = files.getOriginalFilename().substring(files.getOriginalFilename().lastIndexOf("."));
String fileName = CommonUtils.getUuid() + suffix;
File targetFile = new File(filePath + File.separator + fileName);
if (!rootFile.exists()) {
rootFile.mkdirs();
}
files.transferTo(targetFile);
// 处理附件信息
attachementSave(attachment, files, fileName);
}
/异常捕获/
@ExceptionHandler
@ResponseBody
public JSONObject hanlerException(Exception ex, HttpServletRequest request, HttpServletResponse response)
throws Exception {
response.setContentType("text/html;charset=utf-8");
JSONObject json = new JSONObject();
json.put("status", "0");
json.put("message", "操作成功!");
if (ex instanceof MaxUploadSizeExceededException) {
long maxSize = ((MaxUploadSizeExceededException)ex).getMaxUploadSize();
json.put("message", "上传文件太大,不能超过" + maxSize / 1024 / 1024 + "M");
json.put("status", "1");
} else {
json.put("message", "上传失败");
json.put("status", "1");
}
return json;
}
分享到:
相关推荐
spring mvc上传 下载ftp文件
本文将深入探讨Spring MVC在文件上传和下载方面的应用,以及如何结合FineUploader和jQuery实现这一功能。 首先,让我们了解Spring MVC在文件上传中的基本原理。在Spring MVC中,我们可以使用`@RequestParam`注解...
在这个主题中,我们将深入探讨如何使用Spring MVC实现文件的上传和下载功能,以及如何利用Spring的注解和视图解析来简化这一过程。 首先,让我们讨论文件上传。在Spring MVC中,文件上传通常涉及到`@RequestParam`...
Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它在Spring框架的基础上,为...开发者可以通过此副本学习和理解Spring MVC项目的组织方式,以及文件上传下载功能的实现细节。
这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于Spring MVC中文件上传和下载的关键知识点: 1. **Spring MVC 框架**:Spring MVC是...
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
Spring MVC 是一个强大的 web 应用开发框架,它提供了丰富的功能来处理用户请求,包括文件上传和下载。本文将深入探讨如何使用 Spring MVC 实现文件的上传与下载。 首先,要实现文件上传,我们需要引入一些必要的...
在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...
### Spring MVC 文件上传详解 #### 一、Spring MVC与文件上传概述 在现代Web应用开发中,文件上传是一项常见的需求。...此外,对于文件下载功能,Spring MVC同样提供了支持,可以通过简单的配置和代码实现。
在Spring MVC中,文件的上传和下载是常见的功能需求,这涉及到客户端与服务器之间的数据传输。本篇文章将深入探讨Spring MVC如何实现文件上传和下载。 ### 文件上传 1. **依赖配置**:在Spring MVC项目中,为了...
### Spring MVC 附件上传知识点详解 #### 一、Spring MVC框架下的文件上传概述 在Spring MVC框架中实现文件上传功能是十分常见的需求之一。本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括...
- **Servlet 3.0 下的 MultipartResolver**:对于 Servlet 3.0 及以上版本,Spring MVC 提供了内置的文件上传支持。 - **处理表单中的文件上传**:通过控制器方法来接收和处理上传的文件。 #### 异常处理 ...
在Spring MVC中实现文件上传并显示进度是一项常见的需求,特别是在用户需要等待较长时间的大型文件上传时。这个功能可以通过监听文件上传的进度并在前端实时更新来提升用户体验。下面将详细介绍如何利用Spring MVC...
6. **Apache Commons**:Spring MVC 开发中可能会用到 Apache Commons 的一些工具库,例如 `commons-logging.jar` 用于日志记录,`commons-fileupload.jar` 用于文件上传,`commons-lang3.jar` 提供了一些实用的 ...
这篇描述中的"spring mvc 上传代码 可运行"表明这是一个关于Spring MVC文件上传的实际示例项目。为了理解这个项目,我们需要探讨几个关键概念: 1. **模型(Model)**:在Spring MVC中,模型是业务逻辑和数据的载体...
以上只是Spring MVC 5.0.3中的一部分关键特性,实际上还有许多其他功能和优化,如国际化、缓存、上传文件等,都极大地提高了开发效率和应用程序的可维护性。在实际项目中,理解并熟练掌握这些知识点,将有助于构建出...
Spring MVC提供了方便的文件上传和下载功能,开发者可以通过简单的API来实现复杂的文件操作。 **6. 异常处理** 通过自定义异常处理器,Spring MVC允许优雅地处理运行时异常,提供了统一的错误页面和异常信息。 **7...
总结来说,"文件上传下载(maven + spring mvc + jetty)"项目是一个使用现代Java Web技术实现的简单示例,展示了如何利用Maven构建、Spring MVC处理HTTP请求和Jetty作为轻量级服务器。通过对这些技术的掌握,开发者...