- PR -

ASP.NETでのファイルアップロードについて

投稿者投稿内容
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-21 18:11
お世話になっております。

ASP.NET 2005で開発しているのですが、
ファイルのアップロードのところで悩んでいます。

<INPUT TYPE="FILE">や<asp:FileUpload>で
ファイルパス入力フィールドに"C"一文字を入力してから
ボタンを押してポストバックを発生させると
スクリプトエラーになってしまいます。

過去の記事を探してみたのですが、
解決方法を見つけることは出来ませんでした。

スクリプトエラーにならない方法がありましたら、
教えていただければ助かります。

皆様、宜しくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-21 18:32
引用:

アルゴさんの書き込み (2006-06-21 18:11) より:

スクリプトエラーにならない方法がありましたら、
教えていただければ助かります。


スクリプトエラーの詳細な内容を教えてください
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-22 12:01
かるあさん、返答ありがとうございます。

<INPUT TYPE="FILE">や<asp:FileUpload>を作成後、
そのままデバッグモードで実行し、
ファイルパス入力フィールドに一文字だけ入力してから
ボタン等でポストバックを発生させると
スクリプトエラー(IEの左下に黄色の!)が表示されます。
内容は
「エラー:アクセスが拒否されました。」
「コード:0」
です。

皆さんの環境ではこういったエラーは
発生しないのでしょうか?

[ メッセージ編集済み 編集者: アルゴ 編集日時 2006-06-22 12:06 ]
がんふぃーるど
ベテラン
会議室デビュー日: 2006/06/05
投稿数: 58
お住まい・勤務地: さいたま
投稿日時: 2006-06-22 12:39
使用しているOSとブラウザがXP SP2とIEなら以下のURLに記述されていることが原因かと思われます。

http://support.microsoft.com/default.aspx?scid=kb;ja;890981

IEは指定されたパスがローカルや共有フォルダのパスでないと判断すると、
サーバに要求を出さないみたいです。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-22 12:57
引用:

アルゴさんの書き込み (2006-06-22 12:01) より:

皆さんの環境ではこういったエラーは
発生しないのでしょうか?


JavaScriptのエラーということなので
がんふぃーるど さん のおっしゃられるように
OSとブラウザのバージョンは重要ですね

あと、このあたりは調べられましたか?
http://www.google.co.jp/search?q=%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9A%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%8C%E6%8B%92%E5%90%A6%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%80%80%3Cinput+type%3D+file&hl=ja&lr=&start=10&sa=N
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-22 13:26
がんふぃーるどさん、かるあさん、ありがとうございます。

使用しているのはXP SP2とIEでした。
これって回避策とかはなさそうですよね・・・。

上司にXP SP2とIEを使えば
こういった現象が起こりますよって
報告しないと仕方ないですね。

皆さんはファイルのアップロードを
<INPUT TYPE="FILE">や<asp:FileUpload>で行っているのですか?
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-06-22 13:38
Win2k+IEですが、
JavaScriptで以下のようなファイル存在チェック処理を動かしてます。
(アップロードボタン押下時)

コード:
    try{
        var Fs;
        Fs = new ActiveXObject("Scripting.FileSystemObject");
	if (! Fs.FileExists(ファイルパス入力フィールドのID.value) ) {
            // エラー表示
            return false;
        }
    }catch(e){
        // 例外エラー処理
    }



# ActiveXを使用してますので使えない環境では動作しませんが・・・

# 検証しないでソースから抜き出したので動かない場合はご勘弁を
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-22 14:14
Katzeさん、ありがとうございます。

教えていただいたコードを元に
自分なりに考えてみます。

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