600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Java使用ftp上传图片到服务器 图片损坏

Java使用ftp上传图片到服务器 图片损坏

时间:2018-08-21 13:54:50

相关推荐

Java使用ftp上传图片到服务器 图片损坏

目前项目开发中图片存放方式有很多。通过ftp上传到ftp服务器就是其中的一种。

这两天在使用ftp上传图片时遇到了一个问题:图片上传以后需要移动文件夹。

我实现的思路大概是这样的:

1.先根据原图片路径找到对应的文件,拿到文件流

InputStream inputStream = ftp.retrieveFileStream(new String(filePath.getBytes("UTF-8"), "ISO-8859-1"));

2.将文件流通过ftp上传到服务器

//设置为被动模式ftp.enterLocalPassiveMode();//设置上传文件的类型为二进制类型ftp.setFileType(FTP.BINARY_FILE_TYPE);//上传文件if (!ftp.storeFile(filename, input)) {return result;}input.close();

3.上传完成后将原来的文件删除。

方法写完以后在自己电脑也就是windows环境下完全正常。但是放到服务器linux环境下以后上传的图片却损坏了。搜了很多博客,最后发现问题出在了文件流的类型上。

第一步获取流的时候并没有规定流的类型,然后第二步上传的时候规定了流的类型为FTP.BINARY_FILE_TYPE

在windows环境下可能正好默认的是二进制(FTP.BINARY_FILE_TYPE)所以第一步获取的流正好第二步能用。但是在linux环境下获取的流恰巧不是二进制(这里说的是我用的服务器,也有可能你用的服务器是二进制,那就不会出现我的问题)所以这个时候第一步获取的流在第而不就不能用了。

解决的方法:在第一步获取流的时候就限定流的类型

ftp.enterLocalPassiveMode();ftp.setFileType(FTP.BINARY_FILE_TYPE);InputStream inputStream = ftp.retrieveFileStream(new String(filePath.getBytes("UTF-8"), "ISO-8859-1"));

这样就解决了这个问题。

ftp工具类可以参考我的另一篇博客:/qq_35771266/article/details/92075898

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。