我正在与HttpWebRequest一起发送文件。我的文件将来自FileUpload用户界面。在这里,我需要将文件上传转换为文件流,以便与HttpWebRequest一起发送流。我如何将FileUpload转换为文件流?FileUpload到FileStream
回答
由于FileUpload.PostedFile.InputStream给我流时,我用下面的代码以将其转换到字节数组
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[input.Length];
//byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
不知道PostedFile有.InputStream ..谢谢。 – lawphotog 2015-08-20 10:12:16
您无法将FileUpload转换为FileStream。但是,您可以从FileUpload的PostsFile属性获取MemoryStream。然后您可以使用该MemoryStream来填充您的HttpWebRequest。
请你详细说明 - 可能与代码示例或链接? – PeterX 2013-09-20 06:41:44
@PeterX:查看Extremeswank的答案。 – ErikHeemskerk 2013-09-23 09:18:57
可能更好管输入流直接到输出流:
inputStream.CopyTo(outputStream);
这样,您不会在重新传输之前将整个文件缓存在内存中。例如,这里是你如何将它写入一个FileStream:
FileUpload fu; // Get the FileUpload object.
using (FileStream fs = File.OpenWrite("file.dat"))
{
fu.PostedFile.InputStream.CopyTo(fs);
fs.Flush();
}
如果你想把它直接写入到另一个网络请求,你可以做到以下几点:
FileUpload fu; // Get the FileUpload object for the current connection here.
HttpWebRequest hr; // Set up your outgoing connection here.
using (Stream s = hr.GetRequestStream())
{
fu.PostedFile.InputStream.CopyTo(s);
s.Flush();
}
会更因为您将直接将输入文件流式传输到目标主机,而无需先在内存或磁盘上进行缓存。
访问过PostFile后,该文件已被ASP.NET完全缓存。这只能通过使用'HttpRequest.GetBufferlessInputStream()'(.NET 4或更高版本)来规避,但这又要求你自己解析整个请求主体。 – ErikHeemskerk 2012-03-28 20:23:25
您可以直接把文件上传文件到MemoryStream
使用FileBytes
(从技术挺举简化的答案)
using (MemoryStream ms = new MemoryStream(FileUpload1.FileBytes))
{
//do stuff
}
或者,如果你并不需要一个MemoryStream
byte[] bin = FileUpload1.FileBytes;
- 1. Fileupload到varbinary FileStream字段ASP.net
- 2. Xamarin.Forms FileStream - 找不到文件
- 3. Casting System :: IO :: FileStream ^到FILE *
- 4. FileUpload asp.net
- 5. JQuery FileUpload
- 6. ASP.NET FileUpload
- 7. $('#fileupload')。fileupload函数没有调用
- 8. Delphi - MemoryStream或FileStream
- 9. SQL FILESTREAM打破
- 10. 多线程FILESTREAM
- 11. 的FileStream异常
- 12. SQL 2008 filestream
- 13. System.Threading.Tasks和FileStream
- 14. C#从的FileStream
- 15. 理解FILESTREAM
- 16. FileStream和编码
- 17. 的FileStream为
- 18. FileStream读/写
- 19. Delphi,FileStream和MemoryStream
- 20. 的FileStream抛出找不到文件
- 21. FileStream(pdf转换器中的jpeg)到Byte []
- 22. 如何将IFormFile保存到SQLServer FileStream表
- 23. C#到ASP.NET MVC FileStream交叉点
- 24. Sprockets :: FileNotFound找不到文件'jquery-fileupload/basic'
- 25. 添加过滤器到FileUpload控件
- 26. FileUpload文件到Azure Blob存储
- 27. fileupload没有在手风琴找到
- 28. Fileupload复制文件到2.目录
- 29. Fileupload问题?
- 30. MVC Fileupload real contenttype
什么是你真正想要实现 ? – 2010-06-21 06:32:23
我需要将文件从一个域传输到另一个域。所以得到上传的文件,并发送使用HttpWebRequest – 2010-06-21 10:31:15