写二进制文件
我正在从使用http POST将图像传输到服务器的IPhone应用程序读取数据我可以将其读入一个二进制文件并写入文件(请参见下文)我遇到的问题是我打开它失败的图像。写二进制文件
你可以看到这个帖子从iPhone的代码: asp http POST Read Data
代码:
byte[] buffer = new byte[Request.ContentLength];
using (BinaryReader br = new BinaryReader(Request.InputStream))
br.Read(buffer, 0, buffer.Length);
string fileName = @"C:\test\test.jpg";
FileStream fs = new FileStream(fileName, FileMode.Create,
FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(buffer);
bw.Close();
的图像内容类型的应用程序/八位字节流
谁能闪耀任何请点亮此。
请问以下工作为此,它可能会更好到FileStream变成一个MemoryStream
fs.Position = 0;
Bitmap bit_map = Bitmap.FromStream(fs) as Bitmap;
bit_map.Save(@"C:\test\test.jpg");
或者
fs.Position = 0;
Image image = Image.FromStream(fs);
image.Save(@"C:\test\test.jpg", ImageFormat.Jpeg);
完整的示例(使用你的榜样,但如果你想改怎么二进制数据是从其他职位读,这是没有过,只是confinue从你有缓冲后):
byte[] buffer = new byte[Request.ContentLength];
using (BinaryReader br = new BinaryReader(Request.InputStream))
br.Read(buffer, 0, buffer.Length);
MemoryStream mem_stream = new MemoryStream (buffer);
mem_stream.Write(buffer, 0, buffer.Length);
mem_stream.Position = 0;
Image image = Image.FromStream(mem_stream);
image.Save(@"C:\test\test.jpg", ImageFormat.Jpeg);
mem_stream.Close();
你能否给我一个例子,我将如何使用内存流以及如何将数据写入列表
我使用您的代码更新了示例,将数据读入缓冲区。如果你愿意的话,你可以把它改成克里斯汀写的。 – SwDevMan81 2009-10-15 14:23:42
该链接失败: System.Drawing.Image image = System.Drawing.Image.FromStream(mem_stream); 与无效的参数 – MartGriff 2009-10-15 14:33:55
也许Request.ContentLength
设置不正确?我从痛苦的经历中知道,信任它并不总是安全的。 :-(
你可以不知道长度提前这样读取流:
const int bufferSize = 1024 * 64; // pick any reasonable buffer size
List<byte> buffer = new List<byte>();
using(Stream stream = new BufferedStream(request.InputStream, bufferSize)) {
int value;
while((value = stream.ReadByte()) != -1) {
buffer.Add((byte) value);
}
}
你问的应用程序/八位字节流是什么或者怎么改到不同的MIME类型? – 2009-10-15 13:44:32
另外,通过“失败”,你的意思是? – 2009-10-15 13:47:02
当我把失败我的意思是图像不会打开,格式不正确。在Notpad中打开它,并可以看到标题和内容。 – MartGriff 2009-10-15 14:12:35