@Component public class DownloadUtils extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
private ConfigConstants |
configConstants |
private FileUtils |
fileUtils |
private FtpUtils |
ftpUtils |
private org.slf4j.Logger |
LOGGER |
private String |
URL_PARAM_FTP_CONTROL_ENCODING |
private String |
URL_PARAM_FTP_PASSWORD |
private String |
URL_PARAM_FTP_USERNAME |
| 构造器和说明 |
|---|
DownloadUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
private static void |
convertTextPlainFileCharsetToUtf8(String filePath)
转换文本文件编码为utf8
探测源文件编码,探测到编码切不为utf8则进行转码
|
private String |
dealWithMS2013(String type)
因为jodConvert2.1不支持ms2013版本的office转换,这里偷懒,尝试看改一下文件类型,让jodConvert2.1去
处理ms2013,看结果如何,如果问题很大的话只能采取其他方式,如果没有问题,暂时使用该版本来转换
|
ReturnResponse<String> |
downLoad(FileAttribute fileAttribute,
String fileName)
一开始测试的时候发现有些文件没有下载下来,而有些可以;当时也是郁闷了好一阵,但是最终还是不得解
再次测试的时候,通过前台对比url发现,原来参数中有+号特殊字符存在,但是到后之后却变成了空格,突然恍然大悟
应该是转义出了问题,url转义中会把+号当成空格来计算,所以才会出现这种情况,遂想要通过整体替换空格为加号,因为url
中的参数部分是不会出现空格的,但是文件名中就不好确定了,所以只对url参数部分做替换
注: 针对URLEncoder.encode(s,charset)会将空格转成+的情况需要做下面的替换工作
|
private String |
encodeUrlParam(String urlAddress)
对最有一个路径进行转码
|
private String |
replacePlusMark(String urlAddress)
注:可能是原来因为前端通过encodeURI来编码的,因为通过encodeURI编码+会被转成+号(亦即没有转),
而通过encodeURIComponent则会转成%2B,这样URLDecoder是可以正确处理的,所以也就没有必要在这里替换了
转换url参数部分的空格为加号(因为在url编解码的过程中出现+转为空格的情况)
|
private final org.slf4j.Logger LOGGER
@Autowired private ConfigConstants configConstants
@Autowired private FileUtils fileUtils
@Autowired private FtpUtils ftpUtils
public ReturnResponse<String> downLoad(FileAttribute fileAttribute, String fileName)
fileAttribute - private String replacePlusMark(String urlAddress)
urlAddress - private String encodeUrlParam(String urlAddress)
urlAddress - http://192.168.2.111:8013/demo/Handle中文.zipprivate String dealWithMS2013(String type)
type - private static void convertTextPlainFileCharsetToUtf8(String filePath) throws IOException
filePath - 文件路径IOExceptionCopyright © 2019. All rights reserved.