请问大家关于c#上传文件到webdav的问题,摆脱大家救救我

etracer 2012-01-19 11:34:36

请问大家关于c#上传文件到webdav的问题,我最多怎么只能上传2个呢?多于2个就说超时了?怎么办?摆脱大家救救我

private void uploadfn(String loopnum)
{


string uploadtmp = urlbox.Text;
string tmpstr = uploadtmp + loopnum+uploadfile;

writelog("アップロード:開始,件数:" + loopnum + "件," + loopnum + uploadfile);

// HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://192.168.0.19/webdav/365.pdf");
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(tmpstr);

req.KeepAlive = false;//---------------------wo jia de


req.Credentials = new NetworkCredential(username.Text, passwd.Text);//用户名,密码 //CredentialCache.DefaultCredentials使用默认的认证


req.PreAuthenticate = true;
req.Method = "PUT";


req.AllowWriteStreamBuffering = true;

// Retrieve request stream
Stream reqStream = req.GetRequestStream();

// Open the local file
//FileStream rdr = new FileStream("C://test/365.pdf", FileMode.Open);
FileStream rdr = new FileStream(localpathfile, FileMode.Open);

// Allocate byte buffer to hold file contents
int bufferLength = 4096;

byte[] inData = new byte[bufferLength];

// loop through the local file reading each data block
// and writing to the request stream buffer
int bytesRead = rdr.Read(inData, 0, inData.Length);


//------------詳しくpress---------------
long fileLength = rdr.Length;

string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.ASCII.GetBytes("/r/n--" + strBoundary + "/r/n");
//请求头部信息
StringBuilder sb = new StringBuilder();

string strPostHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
long length = rdr.Length + postHeaderBytes.Length + boundaryBytes.Length;

System.IO.FileInfo f = new FileInfo(localpathfile);
// MessageBox.Show(f.Length.ToString());
long MaxValue = f.Length;
long offset = 0;
//开始上传时间
DateTime startTime = DateTime.Now;

progressDetail.Maximum = int.MaxValue;
progressDetail.Minimum = 0;
progressDetail.Value = 0;
//---------------------------

while (bytesRead > 0)
{

//------------詳しくpress---------------

offset += bytesRead;
progressDetail.Value = (int)(offset * (int.MaxValue / length));
TimeSpan span = DateTime.Now - startTime;
double second = span.TotalSeconds;
lblTime.Text = "かかる時間:" + second.ToString("F2") + "秒";
if (second > 0.001)
{
lblSpeed.Text = " 平均速度:" + (offset / 1024 / second).ToString("0.00") + "KB/秒";
}
else
{
lblSpeed.Text = "接続中...";
}
lblState.Text = "アップロード:" + (offset * 100.0 / length).ToString("F2") + "%";
lblSize.Text = (offset / 1048576.0).ToString("F2") + "M/" + (fileLength / 1048576.0).ToString("F2") + "M";

//---------------------------
reqStream.Write(inData, 0, bytesRead);
bytesRead = rdr.Read(inData, 0, inData.Length);
}

rdr.Close();
reqStream.Close();
req.GetResponse();



writelog("アップロード:完了,件数:" + loopnum + "件" + loopnum + uploadfile);
...全文
291 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-01-19
  • 打赏
  • 举报
回复
恭喜LZ,自己解决。加油
etracer 2012-01-19
  • 打赏
  • 举报
回复
搞定了,为什么每次我给100分,提问题,都是自己搞定

加 resp.Close(); 就好了
etracer 2012-01-19
  • 打赏
  • 举报
回复
不是文件大小的问题,我试过大文件500M没问题,可以传送,小文件的2个以上也不行
NdscFaineant 2012-01-19
  • 打赏
  • 举报
回复
可能是文件太大,超时时间req.Timeout、req.ReadWriteTimeout调大一点
熙风 2012-01-19
  • 打赏
  • 举报
回复
么有搞过。。。
熙风 2012-01-19
  • 打赏
  • 举报
回复


接分。。。
iis6.0完整安装包xp+iis 6.0 完整安装包 xp sp3 IIS 6.0 中的一个最重要的变动涉及 Web 服务器安全性。为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS 安装在 Microsoft Windows Server 2003 家族的成员上。 要点 为了更好地预防恶意用户和攻击者的攻击,没有将 IIS 默认安装到 Microsoft® Windows® Server 2003 家族的成员上。而且,当您最初安装 IIS 时,该服务在高度安全和“锁定”的模式下安装。在默认情况下,IIS 只为静态内容提供服务 - 即,ASP、ASP.NET、服务器端包含、WebDAV 发布和 FrontPage® Server Extensions 等功能只有在启用时才工作。如果安装 IIS 之后未启用该功能,则 IIS 返回一个 404 错误。您可以为动态内容提供服务,并通过 IIS 管理器中的 Web 服务扩展节点启用这些功能。同样,如果应用程序扩展未在 IIS 中进行映射,则 IIS 返回一个 404 错误。要映射扩展,请参阅设置应用程序映射。有关如何排解 404 错误(包括 404.2 和 404.3)、与 IIS 6.0 的新安装相关的问题或从低版本的 IIS 进行升级的详细信息,请参阅疑难解答。 iis6.0完整安装包xp 通过 Web 服务器证书向导和 CTL 向导,您可以同步 Web 和 NTFS 的安全设置、获得并安装服务器证书以及创建和修改证书信任列表。还可以选择一个加密服务提供程序 (CSP) 以使用证书加密数据。 详细信息,请参阅使用证书向导。

110,533

社区成员

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

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

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