在asp.net razor网站上传图片

时间:2016-11-17 21:01:44

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

我有一个表单,您可以在其中输入有关图片的信息并将其上传,html表单中的上传代码为:

 @FileUpload.GetHtml(
                initialNumberOfFiles: 1,
                allowMoreFilesToBeAdded: false,
                includeFormTag: false,
                uploadText: "Upload"); 

在我得到的同一页面的c#代码中:

                            var fileName = "";
                            var fileSavePath = "";
                            var uploadedFile = Request.Files[0];
                            fileName = Path.GetFileName(uploadedFile.FileName);
                            fileSavePath = Server.MapPath("~/Images/inscriptions/" +
                            fileName);
                            uploadedFile.SaveAs(fileSavePath);

由于某种原因我在行上得到错误“index out of range”:

var uploadedFile = Request.Files[0];

我希望用户点击浏览选择文件并填写其他文本框并单击保存以上传图片并填写数据库中的信息(已处理)

1 个答案:

答案 0 :(得分:1)

我发现你的问题可以通过以下解决方案之一解决:

解决方案1 ​​:将includeFormTag: false更改为includeFormTag: true

@FileUpload.GetHtml(
            initialNumberOfFiles: 1,
            allowMoreFilesToBeAdded: false,
            includeFormTag: true,
            uploadText: "Upload");

如果FileUpload帮助程序位于任何form标记之外,则此解决方案适用。

解决方案2 :使用包含Html.BeginForm帮助程序的enctype="multipart/form-data"属性FileUpload

using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @FileUpload.GetHtml(
            initialNumberOfFiles: 1,
            allowMoreFilesToBeAdded: false,
            includeFormTag: false,
            uploadText: "Upload");
}

如果您不想通过FileUpload帮助程序创建新的表单代码并使用现有表单,则此解决方案适用。

注意:IndexOutOfRangeException Request.Files[0]来自表单提交请求,该请求省略了<input type="file" />中包含的文件部分,因此您需要包含enctype="multipart/form-data"属性(请参阅解释{{3 }})。

相关问题:

here

How to use @FileUpload.GetHtml inside Html.BeginForm and sumbit FilesList