- PR -

HttpRequestクラスのSaveAsメソッドについて

1
投稿者投稿内容
Jetta
常連さん
会議室デビュー日: 2008/10/15
投稿数: 44
投稿日時: 2008-11-20 14:26
ASP.NET VS2005で開発しています。

商品管理の登録・照会画面を作っているのですが、登録画面で商品の紹介画像をサーバーにアップロードしようと思っています。

ローカルPCに保存されている、登録したい画像のパス/ファイル名を画面で指定してもらい、その画像ファイルを、開発中のWEBシステム配下の既存フォルダーにアップロード(保存)しようとしています。

この保存を、以下のようにSaveAsメソッドで行ったのですが、エラーが出てしまいました。

Dim posted As HttpPostedFile = Request.Files("userfile")
posted.SaveAs("~/image/article/no0010.jpg" & System.IO.Path.GetFileName(posted.FileName))

■エラーメッセージ
SaveAs メソッドはルート指定のパスが必要であるように設定されています。
パス '~/image/article/no0010.jpg'にはルートが指定されていません。


物理パス(例:'c:websystem/image/article/no0010.jpg')を指定すると保存できるのですが、出来れば仮想パスで記述したいと思っています。

調べてみたら、MapPathメソッドと言うのがあり、「引数に指定された仮想パスに対応する物理パスを戻す」との説明があり色々試してみたのですが、どうしても出来ませんでした。

どなたか、やられた経験のある方がいらっしゃいましたら、ご教授頂けると助かります。
どうか、よろしくお願い致します。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-11-20 14:49
System.Web.UI.Pageクラス の MapPath について調べてみてください。
http://msdn.microsoft.com/ja-jp/library/system.web.ui.page.mappath.aspx
Jetta
常連さん
会議室デビュー日: 2008/10/15
投稿数: 44
投稿日時: 2008-11-20 15:36
セラフさん

こんにちは。
早速試してみまして、物理パス名を取得することができ、大変助かりました。

ちなみに対応したコードを帰しアしておきます。

Dim virtualPath As String
Dim returnValue As String
returnValue = Page.MapPath(virtualPath)


早いアドバイス、本当に大変ありがとうございました。

PS:このように迅速で豊富な情報をお持ちなのに大変驚いています。。。

108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2008-11-20 15:44
引用:

調べてみたら、MapPathメソッドと言うのがあり、「引数に指定された仮想パスに対応する物理パスを戻す」との説明があり色々試してみたのですが、どうしても出来ませんでした。


引数、戻り値の意味がわからないという事ですか?
MapPath(仮想パス)とすれば物理パスが取得できるはずです。

Dim Return As String
Return = MapPath(仮想パス)
とすればstrReturnに値が入ります。
そのままつかうのであれば宣言する必要もありません。

解決済みでしたね。

MapPathに関しては
Jettaさん本人が提示されているじゃないですかw


[ メッセージ編集済み 編集者: 108 編集日時 2008-11-20 15:48 ]
Jetta
常連さん
会議室デビュー日: 2008/10/15
投稿数: 44
投稿日時: 2008-11-20 16:53
108さん

>引数、戻り値の意味がわからないという事ですか?
はい、先程まではそうでした(笑)

>とすればstrReturnに値が入ります。
>そのままつかうのであれば宣言する必要もありません。
そうですね。
無駄な変数が1つ減りました。

皆さんのご助言で最善な形で解決できました。

セラフさん、108さん。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)