java 文件上传下载
翻新十年前的老项目,文件上传改为调用接口方式,记录一下子~~~
java后台代码:
//取配置文件中的上传目录 @Value("${uploadPath}") String path; //文件上传接口 @RequestMapping(value = "upload") @ResponseBody public String getMobileAuthCode( HttpServletRequest request,String files ,String appId,String fileUUIDs,String myCallback) throws Exception { //文件支持多个 以逗号分隔 String[] file=files.split(","); //文件生成的uuid ,以逗号分隔,防止文件重名 String[] fileUUID=fileUUIDs.split(","); //本地文件 File localFile; InputStream input = null; OutputStream output = null; for (int i = 0; i <file.length ; i++) { localFile=new File(file[i]); String fileName = localFile.getName(); //获取文件类型 String filetype=fileName.substring(fileName.indexOf("."),fileName.length()); try { File var4 = new File(path+"\\" + appId); //若目标地址不存在,则创建 if (!var4.exists() || var4.exists() && !var4.isDirectory()) { var4.mkdirs(); } //将本地文件 写入目标地址 input = new FileInputStream(localFile); output = new FileOutputStream(new File(path + "\\" +appId+"\\"+ fileUUID[i]+filetype)); byte[] buf = new byte[1024]; int bytesRead; while ((bytesRead = input.read(buf)) != -1) { output.write(buf, 0, bytesRead); } }catch (Exception e){ System.out.println("文件上传失败"); e.printStackTrace(); }finally { input.close(); output.close(); } } String result = "{'ret':'true'}"; result=myCallback+"("+result+")"; return result; } //文件下载 @RequestMapping("downLoad") public ResponseEntity<byte[]> downloadFile(String fileUrl,String needFile) throws IOException { //获取文件路径 HttpHeaders headers = new HttpHeaders();//http头信息 File file = new File(path+"\\"+fileUrl);//新建一个文件 String downloadFileName = new String(needFile.getBytes(), "iso-8859-1"); //设置编码 headers.setContentDispositionFormData("attachment", downloadFileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }
jsp 页面代码:
window.open("http://ip:port/file/downLoad?needFile="+filename+"&fileUrl="+fileurl);//下载
//上传 $.ajax({ url: "http://ip:port/file/upload", type: 'post', dataType:'jsonp', jsonp: "callback", data:{ "files":files, "appId":contentForm.appId.value, "fileUUIDs":fileUUIDs }, success: function (data) { } });
为了未来有更多的选择