簡體   English   中英

在asp.net剃刀網站上上傳圖片

[英]image upload in asp.net razor website

我有一個表單,您可以在其中輸入有關圖片的信息並上傳,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);

由於某種原因,我在行上收到錯誤“索引超出范圍”:

var uploadedFile = Request.Files[0];

我希望用戶單擊瀏覽選擇文件並填充其他文本框,然后單擊保存以上傳圖片並將信息填充到數據庫中(已處理)

我發現您的問題可以通過以下解決方案之一解決:

解決方案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幫助程序創建新的表單標簽,而是使用現有表單,則可以使用此解決方案。

注意: Request.Files[0]上的IndexOutOfRangeException源自表單提交請求,該請求省略了<input type="file" />包含的文件部分,因此您需要包括enctype="multipart/form-data"屬性(請參見此處的說明) )。

相關問題:

如何在Html.BeginForm和sumbit FilesList中使用@ FileUpload.GetHtml

嘗試使用WebMatrix中的Request.Files

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM