关于Java FTP上传时中文名问题

问题描述

以下是代码片断:importsun.net.ftp.FtpClient;FtpClientftpClient=newFtpClient(this.ftpServer);ftpClient.openServer(this.ftpServer,this.ftpPort);ftpClient.login(this.ftpUser,this.ftpPassword);ftpClient.binary();ftpClient.cd("\");this.ftpClient.put(p_fileName);问题:当p_fileName的值为英文字符时正常,如果出现中文字符,出报如下错误:sun.net.ftp.FtpProtocolException:501Syntaxerrorinparametersorarguments.atsun.net.ftp.FtpClient.openDataConnection(FtpClient.java:385)atsun.net.ftp.FtpClient.put(FtpClient.java:594)请问各位达官贵人有遇到这种问题吗?给一个解决方案吧?谢谢。目前我只好先:p_fileName=java.net.URLEncoder.encode(p_fileName);不过这样有一个问题就是,中文全部成了类似于这样的形式:%C8%CB%D0%D4%B5%C4%C8%F5%B5%E3.doc

解决方案

解决方案二:
顶一下
解决方案三:
说明ftpClient.put(p_fileName);这个方法不支持中文呗,把中文转换为Unicode(统一码、万国码、单一码),毕竟语言是外国人写的,有的时候用中文会出错,所以用Unicode转换下
解决方案四:
谢谢楼上兄弟,不过我试过几种编码方法,都不行。所以我觉得可能还有别的方式可以实现。

时间: 2024-09-17 03:38:19

关于Java FTP上传时中文名问题的相关文章

suse linux java ftp上传文件名称导致报错,求大神指导

问题描述 suse linux java ftp上传文件名称导致报错,求大神指导 上传时"school_user.questionext.csv"就因为文件名称多了一个"."导致报错 553 Could not create file.

ftp服务器上传文件-FTP上传时出现out空指针

问题描述 FTP上传时出现out空指针 OutputStream out = ftpClient.appendFileStream(new String(remoteFile.getBytes("GBK"), "iso-8859-1")); 我使用ftp断点上传两份文件,第一份全英文的通过,第二份在文件名中存在中文,上面这句话就会出现out空指针,求大神指点 解决方案 可能是编码,换成utf-8试试

java ftp上传过程中服务器断连后怎么重新连接

问题描述 java ftp上传过程中服务器断连后怎么重新连接 public boolean upload(File fileXML xml1) throws Exception{ try { bstate=0; while(ftp==null || bstate<2) { sleep(500); bstate=connect(xml1); if(ftp==null || bstate<2){ System.out.println(""连接服务器失败,请检查服务器是否开启!&

服务器-Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录

问题描述 Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录 Java FTP上传文件夹,只能上传到FTP根目录,如何上传到指定目录 如果文件较大,如何完整的上传到FTP的服务器 解决方案 用ftpClient.changeWorkingDirectory更改路径,路径不必以/开始

ftp上传时数据Socket错误连接超时的解决方法_应用技巧

ftp上传时数据Socket错误解决方法 一些网友在上传网站时,虽然可以连接但出现如下错误 -------------------------------------------- 200 Type set to ASCII. PASV 227 Entering Passive Mode (61,151,251,110,4,64). 数据 Socket 错误: 连接已失败 (连接已拒绝) --------------------------------------------  或是 -----

java ftp 上传一个文件目录的例子

java ftp 上传一个文件目录 package yq1012; import java.io.File;  import java.io.FileInputStream;  import org.apache.commons.net.ftp.FTPClient;  import org.apache.commons.net.ftp.FTPReply;    public class test {             private  FTPClient ftp;        /**  

Ftp上传时遇到 Socket ERROR怎么办

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 关于FTP Socket不能连接的问题: 用户在使用FTP上传文件时出现无法列表的情况,可能是由于选择在PASV方式下进行上传而导致的.因此,请用户将上传方式改为PORT.相同的软件,版本不同,设置方法也略有不同,因此需要根据实际情况进行设置(若取消pasv后还无法访问,请尝试将pasv前边的"使用防火墙访问"选中后再试一

请教一下FTP上传时TLS协议的问题

问题描述 最近做了一个word2010的外接程序,之前用vs2010做的,结果在xp上报GetFileVersionInfoExw与动态链接Version.dll的错误,查了下说是xp系统不支持于是在虚拟机上用vs2005做了一个2007的外接程序但是代码迁移过来之后FtpWebRequest有一个验证证书的回调在vs2010中是这样写的ServicePointManager.ServerCertificateValidationCallback=NewRemoteCertificateVali

Android中FTP上传、下载的功能实现(含进度)_Android

 Android中使用的FTP上传.下载,含有进度. 代码部分主要分为三个文件:MainActivity,FTP,ProgressInputStream 1. MainActivity package com.ftp; import java.io.File; import java.io.IOException; import java.util.LinkedList; import com.ftp.FTP.DeleteFileProgressListener; import com.ftp.