【问题标题】:image upload and image.ContentLenght > 0图片上传和 image.ContentLenght > 0
【发布时间】:2012-08-07 15:30:33
【问题描述】:

我有对象街,里面有一些照片。我正在尝试以与创建新街道对象相同的形式实现上传。所以想象一个带有字段的 mvc 网络表单

  • 街道名称
  • 街道编号
  • 照片1
  • 照片2
  • 照片3

现在,在 create.cshtml 页面上,我的表单包含 StreetNameStreetNumber 字段和

<input type="file" name="postedImages" />
<input type="file" name="postedImages" />
<input type="file" name="postedImages" />

提交此表单后,我会将这些数据发送到 StreetController 以进行进一步处理

 [HttpPost]
 public ActionResult Create(StreetViewModel newData, IEnumerable<HttpPostedFileBase> postedImages)
 {
    //create object and save stretname and streetnumber
    //process posted images
    foreach(var image in postedImages)
    {
        //this is where error occured if I post only one or two images from my view
       if(image.ContentLength >0)
       {
          //process and save images
       }
    }

 }

您可以在我的评论行中看到,如果我发布了网络表单上提供的确切数量的图像,一切都很好,但是如果我发送 1 或 2 个图像,则会发生错误。

如何解决这个问题?谢谢

【问题讨论】:

    标签: c# asp.net-mvc-3


    【解决方案1】:

    在访问ContentLength 属性之前添加null 检查

    if((image!=null) && (image.ContentLength >0))
    {
          //process and save images
    }
    

    【讨论】:

      【解决方案2】:

      foreach(var image in postedImages.Where(pi =&gt; pi != null))

      【讨论】:

        【解决方案3】:

        你可以这样做:

        If(image != null)
            if(image.ContentLength > 0)
                {
                   //code
                }
        

        在获取属性之前检查它是否为空,这是错误的原因。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-10
          • 1970-01-01
          • 2018-10-27
          • 1970-01-01
          • 1970-01-01
          • 2019-02-19
          相关资源
          最近更新 更多