请教webclient上传文件的问题
我想实现不利用控件的文件上传
发了这个帖子:http://topic.csdn.net/u/20081113/16/2bd7bc50-9a4b-4e4b-989f-ba7fa08c8143.html
有朋友给了我这么个方法,利用webclient实现。
代码:public static bool UploadFile(string localFilePath, string serverFolder,bool reName)
{
string fileNameExt, newFileName, uriString;
if (reName)
{
fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf(".") + 1);
newFileName = DateTime.Now.ToString("yyMMddhhmmss") + fileNameExt;
}
else
{
newFileName = localFilePath.Substring(localFilePath.LastIndexOf(@"\")+1);
}
if (!serverFolder.EndsWith("/") && !serverFolder.EndsWith(@"\"))
{
serverFolder = serverFolder + "/";
}
uriString = serverFolder + newFileName; //服务器保存路径
/**//// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
// 要上传的文件
FileStream fs = new FileStream(newFileName, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
try
{
//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(uriString,"PUT",localFilePath);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(uriString, "PUT");
if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
}
else
{
//MessageBox.Show("文件目前不可写!");
}
postStream.Close();
}
catch
{
//MessageBox.Show("文件上传失败,请稍候重试~");
return false;
}
return true;
}
在vs中的确实现的文件的上传,也就是在本机实现了。
但是放到真正的服务器上就不行了,因为这段代码是执行在服务器的,也就是说如果我想上传c:\\tmp下的文件,代码不是在客户机上的c:\\tmp上找,而是到服务器上的相应文件夹下找,这就坏了啊!!!
本来就是想往服务器上传的,结果还要在服务器上找,这样不对啊!!!这是什么原因啊?怎么让上面上传的代码在客户端执行啊????谢谢