QA@IT
«回答へ戻る

1183
 
 【追伸】
 
-HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。
+HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。←【訂正】たびたびすみません、間違ってました。【追伸2】を見てください。
+
+【追伸2】
+
+上の【追伸】は間違ってました。すみません。
+
+実際にコードを書いて検証して見ましたが、input type="file" ... をサーバーコントロールにしなくても、name 属性を与えてやれば、HttpFileCollection オブジェクトの中から name 属性に設定した値を key として持つ HttpPostedFile オブジェクトとして取得できました。
+
+質問者さんのコードは ```<input id="File1" name="user1" type="file" />``` なので C# なら Request.Files["user1"] で当該 HttpPostedFile オブジェクトが取得できるのは確認できました。
+
+VB.NET で Request.Files("user1") と書くと同じになるんでしたっけ? だとすると、質問者さんのケースで HttpPostedFile オブジェクトが取得できない理由は分かりません。デバッガで Files などに何が含まれるか調べてください。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。

どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。←【訂正】失礼しました。代入されてましたね。エラーの原因は下の【追伸】を見てください。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。←【訂正】たびたびすみません、間違ってました。【追伸2】を見てください。

【追伸2】

上の【追伸】は間違ってました。すみません。

実際にコードを書いて検証して見ましたが、input type="file" ... をサーバーコントロールにしなくても、name 属性を与えてやれば、HttpFileCollection オブジェクトの中から name 属性に設定した値を key として持つ HttpPostedFile オブジェクトとして取得できました。

質問者さんのコードは <input id="File1" name="user1" type="file" /> なので C# なら Request.Files["user1"] で当該 HttpPostedFile オブジェクトが取得できるのは確認できました。

VB.NET で Request.Files("user1") と書くと同じになるんでしたっけ? だとすると、質問者さんのケースで HttpPostedFile オブジェクトが取得できない理由は分かりません。デバッガで Files などに何が含まれるか調べてください。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。


> どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。←【訂正】失礼しました。代入されてましたね。エラーの原因は下の【追伸】を見てください。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。←【訂正】たびたびすみません、間違ってました。【追伸2】を見てください。

【追伸2】

上の【追伸】は間違ってました。すみません。

実際にコードを書いて検証して見ましたが、input type="file" ... をサーバーコントロールにしなくても、name 属性を与えてやれば、HttpFileCollection オブジェクトの中から name 属性に設定した値を key として持つ HttpPostedFile オブジェクトとして取得できました。

質問者さんのコードは ```<input id="File1" name="user1" type="file" />``` なので C# なら Request.Files["user1"] で当該 HttpPostedFile オブジェクトが取得できるのは確認できました。

VB.NET で Request.Files("user1") と書くと同じになるんでしたっけ? だとすると、質問者さんのケースで HttpPostedFile オブジェクトが取得できない理由は分かりません。デバッガで Files などに何が含まれるか調べてください。

追伸&訂正を追記

1183
 
 > どこを見直したら良いのかの見当がつかず、難渋している次第です。
 
-Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。
+Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。←【訂正】失礼しました。代入されてましたね。エラーの原因は下の【追伸】を見てください。
 
 なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。
 

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。

どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。←【訂正】失礼しました。代入されてましたね。エラーの原因は下の【追伸】を見てください。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。


> どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。←【訂正】失礼しました。代入されてましたね。エラーの原因は下の【追伸】を見てください。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。

追伸追加

1183
 http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx
 
 もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。
+
+【追伸】
+
+HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。

どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。


> どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

【追伸】

HttpFileCollection オブジェクトの中に input id="File1" ... の HttpPostedFile オブジェクトが含まれるようにするには、input id="File1" ... に runat="server" 属性を追加してサーバーコントロール(HtmlInputFile)にする必要がありますのでご注意ください。

回答を投稿

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。

どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。

ご自分の環境をもう少し詳しく書いていただけませんか?

VS と OS のバージョン以外に、ASP.NET, IIS のバージョン、ASP.NET 開発サーバー / IIS Express / IIS のどれを使っているか、使っているブラウザ・・・などです。

質問と関係ないと思われるかもしれませんが、意外なところで関係があったりしますので。


> どこを見直したら良いのかの見当がつかず、難渋している次第です。

Dim posted As HttpPostedFile から posted.FileName の間まで posted には何も代入されてないから(Nothing のままだから)、タイトルのエラーが出るのです。

なので、そこを見直してみましょう。HttpRequest.Files プロパティで HttpFileCollection オブジェクトを取得し、それから HttpPostedFile オブジェクトを取得してそれを posted に代入・・・というように。

それより、ASP.NET Web Forms アプリなら FileUpload サーバーコントロールを使ってはいかがですか。その方が簡単ですし。詳しくは以下の MSDN ライブラリを見てください。サンプルコードも記載されています。

FileUpload クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

もし、FileUpload クラスを使えない理由があるなら、その理由を書いてください。他の案が出せるかもしれませんので。