# easyupload **Repository Path**: DarKnight.com/easyupload ## Basic Information - **Project Name**: easyupload - **Description**: 使用最简单的代码和配置完成项目中的上传与下载功能 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-06-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## easyupload 极简主义上传工具包,力求做到用最少的代码和配置,完成一般项目所所需要的上传和下载功能。 从此不必纠结于各种流的输入输出困扰,或是文件对象与服务器操作的繁琐。 工具包基于Apache的FTPServer项目与Commons Net项目实现上传与下载功能。 ### 基于极少量配置,零代码实现基础上传下载功能 在上传页面中向URL:/easyUpload/uploadFile 中提交上传文件表单,即可实现基于默认配置的基础上传功能。 例如:
同样,在下载页面中向URL:/easyUpload/downloadFile 中提交下载文件表单与文件路径相关参数,即可实现基于默认配置的 基础下载功能。 例如: 通过在FTP配置文件(默认为 connection.properties)中配置 ftpserver.uploadPageBean 属性来分别配置上传完成后跳转的 后续处理类名或试图类名。 ### 使用默认客户端向内嵌文件服务器通过默认用户进行登录,并执行上传下载功能 如果上传或下载过程中有希望能自己通过Java类调用来控制对应功能的需求时,可以通过提供的 UploadFileService 类(com.darknight.ftp.ftpClient.service.UploadFileService)来非常简便的手动实现上传功能。 例如: @RequestMapping(value = {"uploadExample"}, method = {RequestMethod.POST}) public String uploadExample(@RequestParam("uploadFile")MultipartFile uploadFile, Model model) { String storeFilePath = "easyUpload/step2"; try { boolean uploadResult = uploadFileService.uploadFile(uploadFile, storeFilePath); if(uploadResult) { model.addAttribute("msg", "文件:" + uploadFile.getOriginalFilename() + " 上传成功,文件大小:" + uploadFile.getSize() + " B"); }else { model.addAttribute("msg", "文件上传失败"); } return "easyUpload/step2/uploadPage"; } catch (Exception e) { e.printStackTrace(); model.addAttribute("msg", e.getMessage()); return "base/500"; } } 同样可以通过提供的 UploadFileService 类来非常简便的手动实现下载功能。 例如: @RequestMapping(value = {"downloadExample"}, method = {RequestMethod.POST}) public void downloadExample(@RequestParam("fileName")String fileName, HttpServletRequest request, HttpServletResponse response) { String storeFilePath = "easyUpload/step2"; try { // 设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("multipart/form-data"); // 根据不同 User-Agent 来编码文件名 String encodeFileName = RequestUtils.getEncodedFileName(fileName, request); // 设置文件头:设置下载文件名 response.setHeader("Content-Disposition", "attachment;fileName=" + encodeFileName); OutputStream outputStream = response.getOutputStream(); boolean uploadResult = uploadFileService.downloadFile(storeFilePath, fileName, outputStream); uploadResult = false; if(uploadResult) { // 此处可添加针对下载文件成功后的自定义逻辑 outputStream.flush(); } } catch (Exception e) { e.printStackTrace(); } } ### 使用默认客户端向内嵌文件服务器通过配置的自定义用户进行登录,并执行上传下载功能 当项目中没有连接FTP服务器的配置文件(默认为 connection.properties)时,或配置文件中没有启用对应配置参数(如:ftpserver.ftpAddress) 时,会使用默认配置的FTP服务器路径和端口进行服务器的初始化与FTP客户端用户的配置。此时默认内嵌FTP服务器配置路径为:localhost, 端口为:2121;客户端连接用户默认为 admin / admin。 ### 使用默认客户端向外部文件服务器通过配置的自定义用户进行登录,并执行上传下载功能 若项目中需要向外部FTP服务器进行上传下载操作时,可以通过配置文件(默认为 connection.properties)中 ftpserver.ftpAddress 和 ftpserver.ftpPort 来配置对应的路径与端口,使用 ftpserver.account 和 ftpserver.password 来配置登录用户的账号和密码。同样, 也可以在程序中通过读取不同登录用户的信息来动态的进行FTP服务器的连接和登录,并实现上传与下载功能。 ### 使用默认客户端向文件服务器通过系统用户进行登录,并执行上传下载功能