C#用什么方法上传8G的大文件到ESX(HTTPS)

ALCAT 2011-08-02 09:02:14
我想用vSphere sdk(C#)编程向ESX服务器上传文件,但是文件大小受到限制。
基本代码如下:
WebClient client = new WebClient();
NetworkCredential nwCred = new NetworkCredential();
nwCred.UserName = "root"; //f2.strUsername;
nwCred.Password = "abc12345"; //f2.strPassword;
client.Credentials = nwCred;
client.Headers.Add(HttpRequestHeader.Cookie, getCookie(esx));
client.UploadFile(urlString, "PUT", fileName);

我上传小文件没问题,大的就出问题。
urlString可以为:
urlString = "https://10.10.0.227/folder/UBUNTU/UBUNTU.vmdk?dcPath=ha-datacenter&dsName=datastore1";

不知道根据我的情况,可以采用何种方式来上传文件啊?
...全文
127 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ALCAT 2011-08-05
  • 打赏
  • 举报
回复
问题解决了,采用的是流的方法,具体的实现我转到博客中了
http://blog.csdn.net/wwwgeyang777/article/details/6651607

结贴给分了。
ALCAT 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zjq8888882009 的回复:]

分卷压缩,循环上传。
[/Quote]

能传点代码来看看吗?谢啦!
zjq8888882009 2011-08-02
  • 打赏
  • 举报
回复
分卷压缩,循环上传。
ALCAT 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 scm_2008 的回复:]

8G,天啊,没上传过这么大的,切割下分个上传吧
[/Quote]

关键是不知道咋办啊!
天罡gg 2011-08-02
  • 打赏
  • 举报
回复
8G,天啊,没上传过这么大的,切割下分个上传吧
ALCAT 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mjp1234airen4385 的回复:]

使用ftp吧。再加上断点续传,应该问题不大了。
[/Quote]

这个ftp用不了啊!呵呵
ruanwei1987 2011-08-02
  • 打赏
  • 举报
回复
8G 呵呵
mjp1234airen4385 2011-08-02
  • 打赏
  • 举报
回复
使用ftp吧。再加上断点续传,应该问题不大了。
ALCAT 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]

引用 7 楼 wwwgeyang777 的回复:
引用 6 楼 zjq8888882009 的回复:

分卷压缩,循环上传。


能传点代码来看看吗?谢啦!


这个用不着写什么代码吧!

比如说你按照32k一块数据来上传,那么你的代码中 UploadData 代码中所传的数据byte[],可以用前8个字节的一个long数据表示数据块在文件中的偏移地址,然后才是那32k数据……
[/Quote]

但是WebClient的stream不支持seek吧!
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gefangliang 的回复:]
只能分卷压缩上传,采用大文本上传,呵呵,不过一般好的解决方案要收费的。
[/Quote]
这其实没有什么技术含量。所以既不能收费,也懒得写代码。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwwgeyang777 的回复:]
引用 6 楼 zjq8888882009 的回复:

分卷压缩,循环上传。


能传点代码来看看吗?谢啦!
[/Quote]

这个用不着写什么代码吧!

比如说你按照32k一块数据来上传,那么你的代码中 UploadData 代码中所传的数据byte[],可以用前8个字节的一个long数据表示数据块在文件中的偏移地址,然后才是那32k数据(可以分配一个 32k+8 自己的byte[]数组,然后使用Array.Copy将数据块写到这个数组data[8]位置)。

你可以多线程上传,比如用10个线程,这样还比只一个线程快一些。而且如果失败了还可以重传小块数据。
py1025677845 2011-08-02
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/899b313610661ed9ad51f3b3.html看看这个对你有没有帮助、
心灵彩虹 2011-08-02
  • 打赏
  • 举报
回复
只能分卷压缩上传,采用大文本上传,呵呵,不过一般好的解决方案要收费的。

110,538

社区成员

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

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

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