单个视图上的多个输入文件类型字段

时间:2012-11-13 16:12:47

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

我正在开发一个应用程序,我需要提供两个上传文件选项,一个用于图像,一个用于视频,我有这个代码Ref

foreach (string file in Request.Files)
{
   HttpPostedFile hpf = Request.Files[file] as HttpPostedFile;
   if (hpf.ContentLength == 0)
      continue;
   string savedFileName = Path.Combine(
      AppDomain.CurrentDomain.BaseDirectory, 
      Path.GetFileName(hpf.FileName));
   hpf.SaveAs(savedFileName);
}

并在视图中

<input type="file" id="fileUpload1" name="fileUpload1" size="23" class="image" /> 
<input type="file" id="fileUpload2" name="fileUpload2" size="23" class="video" /> 

它可以很好地上传文件,但问题是如何确定哪个文件来自哪个输入类型,以便区分图像和视频,因为我必须为它们分配单独的唯一名称并保存到数据库

2 个答案:

答案 0 :(得分:2)

您可以使用HttpPostedFileBase

的内容类型识别图像
if (file.ContentType.Contains("image"))
{
    var isImage = true;
}

如果您只对一个图像进行了排序,则还可以检查视频内容类型以进行验证。如果您有两张图片,我们可能需要考虑别的事情。

答案 1 :(得分:2)

可能更好的方法是按键识别文件。

Request.Files["fileUpload1"]应该返回图片

Request.Files["fileUpload2"]应该返回视频

仅供参考,Request.Files.AllKeys包含所有上传文件的所有密钥,它们应与您为<input type="file"...元素指定的任何名称相匹配。