先日、
https://teratail.com/questions/275257
の質問をさせていただいた者ですが、
段階的にレベルアップしようと思い、ファイルアップロードのみの実装を試みております。
前提・実現したいこと
画像ファイルのアップロード機能を実装したいです。
以下のサイトを参考に、ほぼそのままコードを書いているはずなのですが、
表題のようなエラーが発生しております。
https://www.atmarkit.co.jp/fdotnet/dotnettips/935aspmvcfileupload1/aspmvcfileupload1.html
発生している問題・エラーメッセージ
アップロードする画像を選択後、「送信」ボタン押下時に、コントローラーファイルにて、以下のエラーが発生しております。
※添付画像も参照お願いいたします。
「System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'」
該当のソースコード
※Viewファイルです。(Index.vbhtml)※bodyタグの中身のみ記載
※参考サイトでは、<% %>のような記法で書かれておりますが、ところどころエラーが発生しましたので、書き直しています。
VisualBasic
1@Code 2 ViewData("Title") = "Index" 3End Code 4 5<h2>Index</h2> 6 7<div> 8 @Using (Html.BeginForm("Index", "Upload", FormMethod.Post, New With {.enctype = "multipart/formdata"})) 9 @<input type="file" name="fl" size="50" /> 10 @<input type="submit" value="送信" /> 11 End Using 12 13 @ViewData("msg") 14 15</div>
※コントローラファイルです。(UploadController.vb)
VisualBasic
1Imports System.Web.Mvc 2Imports System.IO 3 4Namespace Controllers 5 Public Class UploadController 6 Inherits Controller 7 8 ' GET: Upload 9 Function Index() As ActionResult 10 Return View() 11 End Function 12 13 14 ' アップロード処理を行うUpload/Indexアクション 15 '(HTTP POSTによる実行) 16 <AcceptVerbs(HttpVerbs.Post)> 17 Function Index(ByVal fl As HttpPostedFileBase) As ActionResult 18 19 ' コンテンツ・タイプが"image/*"であるか(画像ファイルか) 20 ' をチェック 21 If fl.ContentType.StartsWith("image/") Then 22 23 ' アップロード先のパスを生成 24 Dim upfile As String = Server.MapPath("~/App_Data/Uploaded/") _ 25 & Path.GetFileName(fl.FileName) 26 27 ' 同名のファイルが存在する場合はエラー 28 If System.IO.File.Exists(upfile) Then 29 ViewData("msg") = "同名のファイルが存在します。" 30 Else 31 ' 画像ファイルで同名のファイルが存在しない場合は保存処理 32 fl.SaveAs(upfile) 33 ViewData("msg") = String.Format( 34 "{0}をアップロードしました。", fl.FileName) 35 End If 36 Else 37 ' 画像ファイルでない場合はエラー 38 ViewData("msg") = "画像以外はアップロードできません。" 39 End If 40 ' 入力元のフォームに結果を表示 41 Return View() 42 End Function 43 End Class 44End Namespace
試したこと
添付画像にあるように、「flがNothingでした」とメッセージが出ており、
「ByVal fl As HttpPostedFileBase」の箇所で、「fl」にカーソルをあててみると、この箇所でもNothingでした。
(意味があるのかどうかわからないのですが)選択した画像の形式を「.PNG」の画像から、「.jpg」の画像に変えてみましたが、
エラーは変わりませんでした。
補足情報(FW/ツールのバージョンなど)
※実行時の動作状況の画像を以下に添付させていただきます。
統合開発環境
Visual Studio2019
(言語:VB.NET、プロジェクトテンプレート:ASP.NET Webアプリケーション MVC)
MVCフレームワークのバージョン
5.2.7
使用PC
Windows10
※平日は仕事のため、返信が19:30以降になります。(22時を過ぎますと返信が翌日になることが多いです)
※休日の返信は不定期です。
申し訳ございませんが、どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー