2017-11-20 6 views
0

私はasp.netコア2カミソリのページで簡単なファイルのアップロードをしようとしています。私は以下のコードを持っています。それが不完全であることをご理解ください。 VS2017を実行すると、FileUploadオブジェクトがチェックされ、残念ながらnullです。私はそれがヌル以外の何かであることを願っています。ストリームを作成してデータを取り出すことができます。しかし、オブジェクトがヌルであると、私は何かが正しく結びついていないと思うでしょう。どのような考えが評価されます。ありがとう。ASP.NET Core 2カミソリのページのファイルアップロード

CSの背後にあるコード:

public class PicturesModel : PageModel 
{ 
    public PicturesModel() 
    { 

    } 
    [Required] 
    [Display(Name = "Picture")] 
    [BindProperty] 
    public IFormFile FileUpload { get; set; } 

    public async Task OnGetAsync() 
    { 

    } 

    public async Task<IActionResult> OnPostAsync() 
    { 
     //FileUpload is null 
     return RedirectToPage("/Account/Pictures"); 
    } 
} 

フロントエンドCSHTMLファイル。

<form method="post" enctype="multipart/form-data"> 
    <label asp-for="FileUpload"></label> 
    <input type="file" asp-for="FileUpload" id="file" name="file" /> 
    <input type="submit" value="Upload" /> 
</form> 

答えて

0

ファイルの入力のためのあなたの財産をFileUploadという名前が付けられていますがTagHelperによって生成されたname属性を上書きし、プロパティ名と一致しないfileにそれを名前を変更しました。

変更(name="FileUpload"である)、それは正しいname属性を生成するよう

にビューコード。また、id="file"の削除は、<label>がクリックされたときに関連付けられたコントロールにフォーカスを設定していないことを意味します)。

+0

ステファンありがとうございます。名前の属性をオーバーライドすると問題が発生しているようです。私はそれを取り除き、今FileUploadオブジェクトが正しい値に見えるものを通過しています。とても有難い。 ありがとうございます。 –

0

私は今朝すべての種類のソリューションを試してみましたが、どれもうまくいかなかったようです。しかし、結局私はこれを思いついた。楽しむ。

/// <summary> 
    /// Upload a .pdf file for a particular [User] record 
    /// </summary> 
    [AllowAnonymous] 
    [HttpPost("uploadPDF/{UserId}")] 
    public async Task<IActionResult> uploadPDF(string UserId, IFormFile inputFile) 
    { 
     try 
     { 
      if (string.IsNullOrEmpty(UserId)) 
       throw new Exception("uploadPDF service was called with a blank ID."); 
      Guid id; 
      if (!Guid.TryParse(RequestId, out id)) 
       throw new Exception("uploadPDF service was called with a non-GUID ID."); 

      var UserRecord = dbContext.Users.FirstOrDefault(s => s.UserID == id); 
      if (UserRecord == null) 
       throw new Exception("User record not found."); 

      var UploadedFileSize = Request.ContentLength; 
      if (UploadedFileSize == 0) 
       throw new Exception("No binary data received."); 

      var values = Request.ReadFormAsync(); 
      IFormFileCollection files = values.Result.Files; 
      if (files.Count == 0) 
       throw new Exception("No files were read in."); 

      IFormFile file = files.First(); 
      using (Stream stream = file.OpenReadStream()) 
      { 
       BinaryReader reader = new BinaryReader(stream); 
       byte[] bytes = reader.ReadBytes((int)UploadedFileSize); 

       Trace.WriteLine("Saving PDF file data to database.."); 
       UserRecord.RawData = bytes; 
       UserRecord.UpdatedOn = DateTime.UtcNow; 
       dbContextWebMgt.SaveChanges(); 
      } 

      return new OkResult(); 
     } 
     catch (Exception ex) 
     { 
      logger.LogError(ex, "uploadPDF failed"); 
      return new BadRequestResult(); 
     } 
    } 
関連する問題