ftp方式下载,文件名包含??导致下载的文件为空

问题描述

ftp方式下载,文件名包含??导致下载的文件为空
使用FTPClient类下载ftp文件,ftp服务器上的文件名fileName包含??字符,如 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml
调试代码,发现程序读取的文件名为 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml。
登录ftp方法:
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding(""utf-8"");
ftpClient.enterLocalActiveMode();
ftpClient.connect(ipAddress ipPort);
ftpClient.login(userName passWord);
下载文件的方法。
/**
* download
* 从ftp下载文件到本地
* @param fileName 服务器上的文件名
* @param path 服务器上的文件夹路径
* @param srcFile 本地存储路径
*/
public void download(String fileName String path String srcFile) {
FileOutputStream fos = null;
try {
String dstFileName = path + ""/"" + fileName;
fos = new FileOutputStream(srcFile);
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(dstFileName fos);
fos.close();
} catch (IOException e) {
logger.error(e.getMessage() e);
} finally{
if(fos != null){
try {
fos.close();
} catch (IOException e) {
logger.error(e.getMessage() e);
}
}
}
}
调试时读取ftp文件的名字如图:

实际ftp路径下文件名如图:

上传后文件为空如图:

Encoding格式GBK、uft-8都试了,FileType试了BINARY_FILE_TYPE和ASCII_FILE_TYPE都不行。
请问这种??怎么处理?

解决方案

应该是上传的时候用GBK编码了

时间: 2024-07-28 21:01:49

ftp方式下载,文件名包含??导致下载的文件为空的相关文章

批量删除文件夹下包含指定字段的文件

using System; using System.IO; using System.Text.RegularExpressions; class App { static void Main() { Console.WriteLine("##########################[程序使用说明]############################"); Console.WriteLine("--目 的:本程序用来删除指定文件夹下包含指定字段的文件用-----

问题收集帖动网论坛完整程序包下载地址(包含所有补丁)_应用技巧

问题收集帖动网论坛完整程序包下载地址(包含所有补丁) Dvbbs7.1.0_Ac.exe 动网论坛完整程序包下载地址(包含所有补丁) Dvbbs7.1.0_Ac.exe动网论坛[05.23]更新补丁下载地址 Q20060430.exe(含重要更新) 为什么我用了5.1的更新后,不能播放多媒体文件,变成乱码了?进入论坛后台--基本设置--系统设置脚本扩展过滤设置里含对"object"或"EMBED"的过滤,此过滤现在可以去掉了,因为新的机制已经对它做了过滤,将这里改为

sftp和ftp 根据配置远程服务器地址下载文件到当前服务_java

废话不多说,关键代码如下所示:   package com.eastrobot.remote; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com

解决下载文件名乱码问题的问题

解决|文件名|问题|下载 string fileName="中文.xls"; string filePath = @"/UpLoad/Reports" FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath(filePath)+fileName);   Response.Charset = "utf-8";   Response.ContentEncod

跨浏览器PHP下载文件名中的中文乱码问题解决方法

 这篇文章主要介绍了跨浏览器PHP下载文件名中的中文乱码问题解决方法,涉及php针对中文编码的转码技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下:   代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode(

spring mvc-springmvc response设置下载文件名无效

问题描述 springmvc response设置下载文件名无效 我在返回的时候设置了response的header,但是下载下来的文件并不是我设置的名字,而是我的请求名称 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=down.xls"); 表单为 <f

跨浏览器PHP下载文件名中的中文乱码问题解决方法_php技巧

本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php $ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20",

net文件流 下载-用流下载文件时,下载文件名后的文件名为什么老是当前网页的名称,求大神指导

问题描述 用流下载文件时,下载文件名后的文件名为什么老是当前网页的名称,求大神指导 System.IO.FileInfo file = new System.IO.FileInfo(xpath); Response.Clear(); Response.Charset = "GB2312 "; Response.ContentEncoding = System.Text.Encoding.UTF8; //Response.ContentType = "application/o

php怎么下载文件名有中文的图片

问题描述 php怎么下载文件名有中文的图片 php怎么下载文件名有中文的图片 比如http://cmss.yicai.com/uppics/images/2015/02/消费金融表格.png 解决方案 对中文文件名做url编码 得到类似http://cmss.yicai.com/uppics/images/2015/02/%E6%B6%88%E8%B4%B9%E9%87%91%E8%9E%8D%E8%A1%A8%E6%A0%BC.png 的地址. 解决方案二: 解决了 灰常感谢!!!!!!!!