【问题标题】:Handling Multiple Optional File Uploads with C# - .NET使用 C# - .NET 处理多个可选文件上传
【发布时间】:2011-09-03 00:01:15
【问题描述】:

我有 8 个不同的文件要上传。

目前我正在使用下面的代码。以下只是用于上传前 2 个文件的 sn-p。它工作得很好,但随着我开始添加越来越多的文件上传字段,很快就会变得丑陋。

网络表单: <p> Thumb 1:<br /> <asp:FileUpload ID="img1sml" type="file" name="img1sml" runat="server" /> </p> <p> Image 1:<br /> <asp:FileUpload ID="img1" type="file" name="img1" runat="server" /> </p>...

代码隐藏: if (!string.IsNullOrWhiteSpace(img1sml.FileName)) { img1sml.PostedFile.SaveAs(Server.MapPath("~/Images/" + img1sml.FileName)); img1.PostedFile.SaveAs(Server.MapPath("~/Images/" + img1.FileName)); // Create command comm = new SqlCommand("INSERT INTO news (title, img1sml, img1, img1sml) VALUES (@Title, @img1sml, @img1)", conn); // Add command parameters

我希望能够(以一种有效的方式)测试 8 个文件上传字段中的每一个是否为空。如果它们是空的,我想跳过文件上传和数据库插入并移动到下一个文件。

你会如何建议我这样做?

非常感谢您对此的任何指导。

【问题讨论】:

  • 移动到下一个文件是什么意思,如果你问如何检查8个文件上传是否为空?
  • 是的,我想检查所有 8 个字段,然后只上传那些包含文件的字段。
  • 好吧,上传是指保存文件并执行该命令,对吗?因为当您进行回发时,文件已上传
  • 嘿。是的,抱歉,我的意思是保存文件 :) 我想保存用户选择要保存的文件的所有文件。用户可能不会保存所有 8 个文件,而只保存(例如)6 个,所以我想确保它循环遍历所有文件,并且这些文件被保存。如果可能的话,我想将保存的文件插入到我的数据库表中的正确列中。

标签: c# asp.net image file upload


【解决方案1】:

您可以循环访问请求对象中发布的文件集合,称为 Request.Files

    foreach (string key in Request.Files)
    {
        HttpPostedFile file = Request.Files[key];
        if (file.ContentLength != 0)
        {
          file.SaveAs(Server.MapPath("~/Images/" + file.FileName));
        }
    }

【讨论】:

  • 谢谢巴勃罗。正如您可能理解的那样,我对 C# 和 .NET 非常陌生。如何在这个 foreach 循环中使用我的img1sml.PostedFile.SaveAs(Server.MapPath("~/Images/" + img1sml.FileName));?所以它会遍历所有文件?
  • 每个文件都可以在 foreach 块中访问,通过文件对象,我将创建一个函数,该函数接受一个 HttpPostedFile 对象并执行您想要的操作
  • 非常感谢您的帮助和耐心 Pablo。我会添加这个,看看我是怎么做的。一分钟后回来:)
  • 嗨,巴勃罗。我使用此代码并收到以下错误:System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Web.HttpPostedFile'.foreach (HttpPostedFile file in Request.Files) 一致。你知道为什么会这样吗?
  • 对不起 Request.Files 遍历集合的键而不是值
猜你喜欢
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2021-09-25
  • 2016-09-30
  • 1970-01-01
相关资源
最近更新 更多