对方post过来的zip文件,接收端如何处理

llgzhang 2010-11-16 05:55:07
对方是一个工具,能通过post方式发文件到我这边,我来接收并保存该文件。目前查到的帮助一般都是post xml数据(不是文件),有这方面经验的大侠是否能给些建议。
下面是一些代码,保存文件时要求是byte类型(单字节类型),但是从Request得到的是char类型(unicode类型),转换还存在问题。
try
{
Stream receiveStream = Request.InputStream;
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(receiveStream, encode);

FileStream streamWriter = File.Create(file);

int size = 256;
Char[] read = new Char[256];
byte[] data = new byte[256];
int count = readStream.Read(read, 0, size);
while (count > 0)
{
for (int i = 0; i < read.Length; i++)
{
data[i] = Convert.ToByte(read[i]);//这里容易出错,如果是汉字就会报错:值对于无符号的字节太大或太小
}
streamWriter.Write(data, 0, count);
count = readStream.Read(read, 0, size);
}

readStream.Close();
streamWriter.Close();

Response.Write("OK!");
}
catch (Exception ex)
{
String s = ex.Message.ToString();
Response.Write(s);
}
...全文
828 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2011-03-11
  • 打赏
  • 举报
回复
你接收到的就是Stream,你管它什么编码,直接Write就得了...干嘛要当字符流用StreamReader读?

不是自己给自己找事儿吗...
calmzeal 2011-03-11
  • 打赏
  • 举报
回复
如果post的就是zip而已,
这里不需要转换吧:
data[i] = Convert.ToByte(read[i]);
直接改成 data[i]=read[i];
或者后面直接写入 read[i]的内容就行了
zip格式是二进制数据

如果是附件形式,用这个:
if (Request.Files.Count>0)
{
HttpPostedFile f = Request.Files[0];
f.SaveAs(Server.MapPath("002.jpg"));
}
子夜__ 2011-03-11
  • 打赏
  • 举报
回复
POST过来的是XML。。

这样行不 在POST之前序列化为byte 接收的时候在反序列化

这样能不能得到。
ystlovehlf 2011-03-11
  • 打赏
  • 举报
回复
不是接收的是zip格式么?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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