FTP上传文件到服务器

依赖:

依赖:commons-netcommons-net3.6

后端:

@RequestMapping("fileUpload")public ApiRest fileUpload(@RequestBody MultipartFile file) throws Exception {File filee = MultipartFileToFile.multipartFileToFile(file);String time = System.currentTimeMillis()+"";String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);//2、删除本地文件if (uploadToFtp2(filee,time,suffix)){System.out.println("上传至ftp服务器!");}else {System.out.println("上传至ftp服务器失败!");}filee.delete();return success("http://IP:PORT/exam/img/"+time+"."+suffix);}private boolean uploadToFtp2(File file,String time,String suffix){FTPClient ftpClient = new FTPClient();try {//连接ftp服务器 参数填服务器的ipftpClient.connect("IP",PORT);//进行登录 参数分别为账号 密码ftpClient.login("xxxx","XXXXXX");//改变工作目录(按自己需要是否改变)//只能选择local_root下已存在的目录String[] imgList = {"jpg","png","gif","jpeg","bmp"};String[] videoList = {"mp4","avi"};if(Arrays.stream(imgList).anyMatch(body -> suffix.equalsIgnoreCase(body))){ftpClient.changeWorkingDirectory("/exam/img/");}else if(Arrays.stream(videoList).anyMatch(body -> suffix.equalsIgnoreCase(body))){ftpClient.changeWorkingDirectory("/exam/video/");}else{ftpClient.changeWorkingDirectory("/exam/other/");}//设置文件类型为二进制文件ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//开启被动模式(按自己如何配置的ftp服务器来决定是否开启)ftpClient.enterLocalPassiveMode();String server_path = time+"."+suffix;long c = System.currentTimeMillis();InputStream input = new FileInputStream(file);OutputStream out = ftpClient.storeFileStream(server_path);byte[] byteArray = new byte[4096];int read = 0;while((read = input.read(byteArray)) != -1){out.write(byteArray,0, read);}out.close();input.close();file.delete();long b = System.currentTimeMillis();System.out.println("上传用时: "+(b-c)+"ms");} catch (IOException e) {e.printStackTrace();return false;}return true;}

文件转换工具类

public class MultipartFileToFile {/*** MultipartFile 转 File** @param file* @throws Exception*/public static File multipartFileToFile(MultipartFile file) throws Exception {File toFile = null;if (file.equals("") || file.getSize() <= 0) {file = null;} else {InputStream ins = null;ins = file.getInputStream();toFile = new File(file.getOriginalFilename());inputStreamToFile(ins, toFile);ins.close();}return toFile;}//获取流文件private static void inputStreamToFile(InputStream ins, File file) {try {OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();ins.close();} catch (Exception e) {e.printStackTrace();}}/*** 删除本地临时文件* @param file*/public static void delteTempFile(File file) {if (file != null) {File del = new File(file.toURI());del.delete();}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部