首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
.NET技术
ASP.NET
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
请教通过webrequest进行文件上传时遇到的问题
[无满意答案结帖,结帖人:adow]
加为好友
发送私信
在线聊天
adow
adow
等级:
可用分等级:
中农
总技术分:
452
总技术分排名:
36360
结帖率:
95.90%
发表于:
2007-11-28 14:26:21
楼主
虽然webclient可以直接实现文件上传到一个url地址,但是我想试试如何使用webrequest来实现
private void Uploadfile(string filename)
{
if (!File.Exists(filename))
return;
/////时间标志
string time_sign = DateTime.Now.Ticks.ToString("x");
//string time_sign = "7d733d2c09b2";
/////取数据流
FileInfo fi = new FileInfo(filename);
FileStream fs = new FileStream(filename, FileMode.Open);
byte[] file_content = new byte[(int)fs.Length];
int file_length = fs.Read(file_content, 0, (int)fs.Length);
fs.Close();
string time_sign_line_start = "-----------------------------" + time_sign + "\r\n";
string time_sign_line_end = "-----------------------------" + time_sign + "--\r\n";
string line_1 = "Content-Disposition: form-data; name=\"f_u_1\"; filename=\"" + filename + "\"\r\n";
//string line_2 = "Content-Type: image/pjpeg\r\n\r\n";
string line_2 = "Content-Type: application/octet-stream\r\n\r\n";
string request_block = time_sign_line_start + line_1 + line_2 +
Encoding.GetEncoding(1252).GetString(file_content) + "\r\n" +
time_sign_line_start + "Content-Disposition: form-data; name=\"hd\"\r\n\r\n" +
"hidden input\r\n" +
time_sign_line_end;
byte[] request_block_byte = Encoding.GetEncoding(1252).GetBytes(request_block);
WebRequest request = WebRequest.Create("http://localhost:58010/testhttpupload/upload.aspx");
request.Headers["Cache-Control"] = "no-cache";
request.Method = "POST";
request.ContentLength = request_block_byte.Length;
Stream stream = request.GetRequestStream();
stream.WriteTimeout = 10000;
stream.Write(request_block_byte, 0, request_block_byte.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream htmlstream = response.GetResponseStream();
StreamReader sr = new StreamReader(htmlstream);
string htmlcode = sr.ReadToEnd();
sr.Close();
htmlstream.Close();
response.Close();
this.Response.Write(htmlcode);
}
在那个接收文件的页面:
protected void Page_Load(object sender, EventArgs e)
{
//////将请求流保存来查看
byte[] request_byte = this.Request.BinaryRead(this.Request.ContentLength);
FileStream fstream = new FileStream("e:\\test\\testhttpupload\\upload\\request.txt", FileMode.Create);
fstream.Write(request_byte, 0, request_byte.Length);
fstream.Close();
if (this.Request.Files != null && this.Request.Files.Count > 0)
{
////
HttpFileCollection fs = this.Request.Files;
HttpPostedFile file = fs[0];
FileInfo fi = new FileInfo(file.FileName);
string filename = "e:\\test\\testhttpupload\\upload\\" + fi.Name;
file.SaveAs(filename);
Response.Write("save file ok");
}
else
{
if (this.Request.Files == null)
{
Response.Write("file null");
return;
}
else
{
this.Response.Write("file "+this.Request.Files.Count.ToString());
}
}
}
每次文件上传时,我都把request的数据导出到一个文件中。而且,我从一个页面表单提交过来的上传也是成功的。但是我通过webreqeust来提交就不行,好像所有的request参数都没有取到,我甚至都把stream发送的流弄成也表单上传一样了,(输出的reqeust内容也一模一样)可就是没有办法取得request的参数,文件也没有。
问题点数:
80
回复次数:
3
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
adow
adow
等级:
可用分等级:
中农
总技术分:
452
总技术分排名:
36360
发表于:
2007-11-28 14:43:54
1
楼 得分:
0
自己顶下先
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
heqi915
3条鱼
等级:
可用分等级:
中农
总技术分:
2456
总技术分排名:
9048
发表于:
2007-11-28 14:52:49
2
楼 得分:
0
再帮你顶一下
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
adow
adow
等级:
可用分等级:
中农
总技术分:
452
总技术分排名:
36360
发表于:
2007-11-28 14:59:23
3
楼 得分:
0
谢谢,那又可以再顶
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
abc推荐给好友