Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpPostedFileBase到映像引发异常_C#_Asp.net Mvc_Image_Jquery File Upload_Httppostedfilebase - Fatal编程技术网

C# HttpPostedFileBase到映像引发异常

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

我正在上传一个10Mb的大图像,我有以下代码:

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应用程序无法复制,因为它按需获取内存。