为什么上传文件格式 20% 时.jpg我得到异常
本文关键字:jpg 异常 文件 格式 为什么 | 更新日期: 2023-09-27 18:34:19
原因是%如果我上传 20 个文件并且它们都是 jpg 没有问题,但如果其中一个文件名是例如 20%.jpg 或 50%.jpg我无法上传它们。
我可以编辑和查看硬盘上的图像,但无法上传它们。
现在,例如,对于文件索引 0 中的测试,我有:D:''5%.jpg所以 txf 和 fn 都包含:D:''5%.jpg
这是我将文件上传到ftp服务器的方法的顶部:
当我在此方法中调用方法createDirectory时,会发生异常。
private void StringArrayUploadFiles(object sender, DoWorkEventArgs e)
{
try
{
foreach (string txf in files)
{
string fn = txf;
BackgroundWorker bw = sender as BackgroundWorker;
FileInfo fileInfo = new FileInfo(txf);
f.TargetFolder = fileInfo.DirectoryName;
f.TargetFolder = Path.GetDirectoryName(txf);
f.TargetFolder = Path.GetFullPath(txf).Replace(":", "").Replace("''", "/");
string filenameonly = Path.GetFileName(f.TargetFolder);
int index = txf.IndexOf(filenameonly);
string left = txf.Substring(0, index);
f.TargetFolder = Path.GetFullPath(left).Replace(":", "").Replace("''", "");
createDirectory(f.TargetFolder);
变量 f 是 FtpSettings:
public class FtpSettings
{
public string Host, Username, Password, TargetFolder, SourceFile;
public bool Passive;
public int Port = 21;
}
文件是字符串[]
当我尝试在 ftp 服务器上为文件创建目录时,会发生异常。那是在我从下载方法调用的方法 createDirectory 中:
createDirectory(f.TargetFolder);
这是 createDirectory 方法:
public void createDirectory(string newDirectory)
{
try
{
string FtpHost = f.Host + "/" + newDirectory;
if (!FtpHost.ToLower().StartsWith("ftp://"))
FtpHost = "ftp://" + FtpHost;
ftpRequest = (FtpWebRequest)WebRequest.Create(FtpHost);
ftpRequest.Credentials = new NetworkCredential(f.Username, f.Password);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
ftpResponse1 = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse1.Close();
ftpRequest = null;
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return;
}
在变量 newDirectory 中,我有:D这很好,所以我不确定 % 在哪里或为什么 % 会出现问题。
该行的 createDirectory 方法中的异常 heppen :
ftpResponse1 = (FtpWebResponse)ftpRequest.GetResponse();
System.Net.WebException was caught
HResult=-2146233079
Message=The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
Source=System
StackTrace:
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.IO.Stream.Close()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetResponse()
at FTP_ProgressBar.FtpProgress.createDirectory(String newDirectory) in c:'ftp_progressbar'FTP_ProgressBar'FtpProgress.cs:line 270
InnerException:
第 270 行是:
ftpResponse1 = (FtpWebResponse)ftpRequest.GetResponse();
也许在 ftp URI 中特殊字符(如 20%
或其他字符(?尝试使用HttpUtility.UrlDecode
和HttpUtility.UrlEncode