0

私はIE9とjquery1.8を使用しています。ajaxForm を使用して POST リクエストを作成しています。フォームには、ファイル入力フィールドが 1 つだけ含まれています。以下のように POST リクエストを送信します。

-----------------------------7dd2d50120f76
Content-Disposition: form-data; name="myFile"; filename="C:\Images\myfile.jpg"
Content-Type: text/plain

ログのように、ファイル名には filepath が含まれています。パスではなくファイル名のみを渡そうとしています。これを達成する方法はありますか?

編集: IE 8 で確認したところ、ファイルパスではなくファイル名のみが送信されています。このファイル パスは、ファイル名のみを想定しているサーバー コードを壊しています。設定する必要のある属性または何かがあるはずである、または IE9 にはこれに関連するいくつかの変更があるのではないかと考えています。

ありがとう、JDP

4

1 に答える 1

1

IE では、サイトが信頼済みゾーンにない場合、これはセキュリティ機能です。他のブラウザーでは、クライアントでこれを絶対に行う必要がある場合 (サーバーで名前を解析する方がはるかに優れたオプションだと思います) - 「名前のみ」を別の非表示フィールドに保存してから、サーバーでそのフィールドを読み取る必要があります。 :

<form onsubmit = "getFileName()">
    <input type="file" id="fu"/>
    <input type="hidden" id="hdFileName" />
    <input type="submit" />
</form>

<script>
    function getFileName() {
        var hid = document.getElementById("hdFileName");
        var fullName = document.getElementById("fu").value;

        var sep = fullName.lastIndexOf("\\"); 
        if (sep == -1)
            hid.value = fullName;
        else
            hid.value = fullName.substring(sep + 1, fullName.length);

        // Testing
        alert(hid.value);

    }
</script>

このコードは、フォームの送信時に起動し、ファイル名に「\」文字が含まれているかどうかを確認します。存在する場合 - ファイル名のみの部分を読み取り (存在しない場合 - すでにファイル名のみ)、隠し変数に格納します。

デモ: http://jsfiddle.net/wKvGP/

于 2013-09-18T02:48:23.317 に答える