如何解决本地向服务器上传文件

长腿爸爸 2009-12-15 05:52:52
需求:
实现本地文件上传至服务器,使用的Http协议。
找了几个方法都是:
未处理 WebException
远程服务器返回错误: (405) 不允许的方法。

使用的示例代码:

/**/
/// <summary>
/// WebClient上传文件至服务器
/// </summary>
/// <param name="fileNamePath">文件名,全路径格式</param>
/// <param name="uriString">服务器文件夹路径</param>
/// <param name="IsAutoRename">是否自动按照时间重命名</param>
public void UpLoadFile(string fileNamePath, string uriString, bool IsAutoRename)
{
int indexOf = 0;
if (fileNamePath.Contains("\\"))
{
indexOf = fileNamePath.LastIndexOf("\\");
}
else if (fileNamePath.Contains("/"))
{
indexOf = fileNamePath.LastIndexOf("/");
}
string fileName = fileNamePath.Substring(indexOf + 1);

string NewFileName = fileName;
if (IsAutoRename)
{
NewFileName = DateTime.Now.ToString("yyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + fileNamePath.Substring(fileNamePath.LastIndexOf("."));
}

string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
if (uriString.EndsWith("/") == false) uriString = uriString + "/";

uriString = uriString + NewFileName;
//Utility.LogWriter log = new Utility.LogWriter();
//log.AddLog(uriString, "Log");
//log.AddLog(fileNamePath, "Log");
/**/
/**/
/**/
/// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
// 要上传的文件
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
//FileStream fs = OpenFile();
BinaryReader r = new BinaryReader(fs);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(uriString, "PUT");


try
{

//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(uriString,"PUT",fileNamePath);


if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
postStream.Close();
fs.Dispose();
// log.AddLog("上传日志文件成功!", "Log");
}
else
{
postStream.Close();
fs.Dispose();
// log.AddLog("上传日志文件失败,文件不可写!", "Log");
}

}
catch (Exception err)
{
postStream.Close();
fs.Dispose();
//Utility.LogWriter log = new Utility.LogWriter();
// log.AddLog(err, "上传日志文件异常!", "Log");
throw err;
}
finally
{
postStream.Close();
fs.Dispose();
}
}
...全文
681 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinzhuzhi 2012-08-31
  • 打赏
  • 举报
回复
遇到同样的问题,求解决
长腿爸爸 2009-12-18
  • 打赏
  • 举报
回复
这个问题有点眉目啦。
关键是执行方法在什么位置。
如果上传方法在本地,就会出现没有权限的问题。
但如果在服务器端执行这个方法就不存在这个问题。
长腿爸爸 2009-12-17
  • 打赏
  • 举报
回复
Up

这个问题就没有好的办法嘛?
limii 2009-12-16
  • 打赏
  • 举报
回复
用UploadFile控件上传不行吗
长腿爸爸 2009-12-16
  • 打赏
  • 举报
回复
求其他解决方案!
长腿爸爸 2009-12-15
  • 打赏
  • 举报
回复
问题可能出现权限问题上,但不知如何解决?
freeboy827 2009-12-15
  • 打赏
  • 举报
回复
有没有权限?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧