C# HttpPostedFileBase到映像引发异常
我正在上传一个10Mb的大图像,我有以下代码:C# HttpPostedFileBase到映像引发异常,c#,asp.net-mvc,image,jquery-file-upload,httppostedfilebase,C#,Asp.net Mvc,Image,Jquery File Upload,Httppostedfilebase,我正在上传一个10Mb的大图像,我有以下代码: public ActionResult Upload(IEnumerable<HttpPostedFileBase> files) { foreach (var file in files) { var image = Image.FromStream(file.InputStream, true, true); ... } } using (FileStream stream
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
var image = Image.FromStream(file.InputStream, true, true);
...
}
}
using (FileStream stream = File.Open(@"d:\test.jpg", FileMode.Open))
{
var image = Image.FromStream(stream);
}
这些例外的原因是什么?注意:对于小图像,一切都很好。请参考-
我认为您无法在控制台应用程序中复制此代码的原因是因为您使用的是一次性代码块(使用块)
试着把代码改成这样-
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
fs = new FileStream(image_url, FileMode.Open, FileAccess.Read);
img = Image.FromStream(fs);
var image = Image.FromStream(fs);
...
//after you are done call below line
fs.Close();
}
}
public ActionResult上传(IEnumerable文件)
{
foreach(文件中的var文件)
{
fs=新的文件流(image\u url,FileMode.Open,FileAccess.Read);
img=Image.FromStream(fs);
var image=image.FromStream(fs);
...
//完成后,请在电话线下方拨打电话
fs.Close();
}
}
也可以在for循环中使用using块-
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
using (FileStream stream = File.Open(<give_file_URL_here>, FileMode.Open))
{
var image = Image.FromStream(stream);
//...
}
}
}
public ActionResult上传(IEnumerable文件)
{
foreach(文件中的var文件)
{
使用(FileStream-stream=File.Open(,FileMode.Open))
{
var image=image.FromStream(stream);
//...
}
}
}
我已经阅读了许多类似例外的答案,没有一个适用于我的案例。映像本身未损坏或位不正确。问题是我在32位模式下调试。只要我在VS2015
中更改此设置,它就发挥了巨大的作用。似乎是图像。对于大图像,FromStream
需要大量RAM
工具->选项->项目和解决方案->Web项目->使用
64位
实际上只有一张图片上传。我尝试使用block,但它仍然抛出相同的异常。顺便说一下,映像是上载的,而不是从磁盘打开的。您的web服务器对可以使用的内存有限制。(如果您有权访问应用程序池的高级设置,您可以找到有多少个)。现在请记住,web服务器上的文件是原始格式的。Console应用程序无法复制,因为它按需获取内存。