读书人

请问webclient远程上传中文文件名乱码

发布时间: 2012-02-27 10:00:22 作者: rapoo

请教webclient远程上传中文文件名乱码的问题
下面是孟老大的代码,中文文件上传到服务器上后,文件名是乱码,请教怎么解决??


private void button1_Click(object sender, System.EventArgs e)
{
// 需要注意的是:txtServerPath文件夹有匿名可写的权限。
// 可以自己定义新文件名字
if(txtFileName.Text.Trim() == " " || txtServerPath.Text.Trim() == " ")
{
MessageBox.Show( "请输入你要上载的文件名字! ", "错误: ", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
else
{
/// 得到文件名,文件扩展名字,服务器路径
string fileNamePath = txtFileName.Text.Trim();
string uriString = txtServerPath.Text.Trim();
string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf( "\\ ") + 1);
string fileNameExt = fileName.Substring(fileName.LastIndexOf( ". ") + 1);
if(uriString.EndsWith( "/ ") == false) uriString = uriString + "/ ";

uriString = uriString + fileName;
/// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;

// 要上传的文件
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
//FileStream fs = OpenFile();
BinaryReader r = new BinaryReader(fs);
try
{
//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(uriString, "PUT ",fileNamePath);
byte[] postArray = r.ReadBytes((int)fs.Length);


Stream postStream = myWebClient.OpenWrite(uriString, "PUT ");
if(postStream.CanWrite)
{
postStream.Write(postArray,0,postArray.Length);
label1.Text = fileName + "上传成功! ";
}
else
{
label1.Text = "文件目前不可写! ";
}
postStream.Close();
linkLabel1.Text = "查看上载的文件 ";
for(int i = linkLabel1.Links.Count - 1;i> -1;i--)
linkLabel1.Links.Remove(linkLabel1.Links[i]);
linkLabel1.Links.Add(0,linkLabel1.Text.Length,uriString);
}
catch(WebException errMsg)
{
label1.Text= "上传失败: " + errMsg.Message;
}
}
}


[解决办法]
try

uriString=HttpUtility.UrlEncoding(uriString);

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
http://dotnet.aspx.cc/article/yuema9os-w1dn-4kis-8rie-s742llj91l6q/read.aspx

读书人网 >C#

热点推荐