Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 在一个视图MVC中发布来自两个上载控件的图像_C#_Html_Asp.net Mvc - Fatal编程技术网

C# 在一个视图MVC中发布来自两个上载控件的图像

C# 在一个视图MVC中发布来自两个上载控件的图像,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我有两个文件上传控制。第一个控件接受类型为image的单个文件,该文件基本上是产品图标。第二个上载控件允许多个图像上载,它包含产品的多个图像 现在我可以使用以下代码成功上传文件 for (int i = 0; i < Request.Files.Count; i++) { var file = Request.Files[i]; if (file != null && file.ContentLength &

我有两个文件上传控制。第一个控件接受类型为image的单个文件,该文件基本上是产品图标。第二个上载控件允许多个图像上载,它包含产品的多个图像

现在我可以使用以下代码成功上传文件

for (int i = 0; i < Request.Files.Count; i++)
        {
            var file = Request.Files[i];

            if (file != null && file.ContentLength > 0)
            {
                if (validImageTypes.Contains(file.ContentType))
                {
                    var fileName = Path.GetFileName(file.FileName);
                    LocationImage fileDetail = new LocationImage()
                    {
                        FileName = fileName,
                        Extension = Path.GetExtension(fileName),
                        ID = Guid.NewGuid()
                    };
                    fileDetails.Add(fileDetail);
                    var path = Path.Combine(Server.MapPath("~/Upload/Images"), fileDetail.ID + fileDetail.Extension);
                    file.SaveAs(path);
                }
for(int i=0;i0)
{
if(validImageTypes.Contains(file.ContentType))
{
var fileName=Path.GetFileName(file.fileName);
LocationImage fileDetail=新的LocationImage()
{
FileName=FileName,
Extension=Path.GetExtension(文件名),
ID=Guid.NewGuid()
};
添加(fileDetail);
var path=path.Combine(Server.MapPath(“~/Upload/Images”)、fileDetail.ID+fileDetail.Extension);
file.SaveAs(路径);
}

这段代码完美地保存了文件,但我想将图标文件保存在一个单独的目录中。我想知道该文件来自单个上载控件,以便我可以将其保存在图标文件夹中。

您可以使用命名参数作为操作方法,而不是从
请求.文件中读取文件。

因此,在您的
表单中(在您的视图中),为您的文件输入控件指定两个不同的名称

<input type="file" name="productIcon" />
<input type="file" name="productImages" multiple />

现在,在动作方法中,有两个参数的名称与输入文件元素的名称相同

[HttpPost]
public ActionResult Save(HttpPostedFileBase productIcon,
                                            IEnumerable<HttpPostedFileBase> productImages)
{
  // to do : Save these
  if(productIcon!=null)
  {
    // to do : Save icon image 
  }
  if(productImages!=null)
  {
     foreach(var img in productImages)
     {
       // to do : Save img
     } 
  }
  // to do : Return something
}
[HttpPost]
公共操作结果保存(HttpPostedFileBase产品图标,
IEnumerable产品(图像)
{
//要做的事:保存这些
if(productIcon!=null)
{
//要执行的操作:保存图标图像
}
如果(productImages!=null)
{
foreach(productImages中的var img)
{
//要做的事情:保存img
} 
}
//做:归还某物
}

很小,但是由于
otherImages
输入显然意味着允许多个图像,因此需要将
multiple
属性添加到标记中。@ChrisPratt Yea.已修复。