簡體   English   中英

如何僅發送文件名而不發送帖子請求中的文件路徑

[英]How to send only file name instead of file path in post request

我正在使用IE9和jquery1.8。 我正在使用ajaxForm發出POST請求。 該表格僅包含一個文件輸入字段。 它發送POST請求,如下所示,

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

與日志中一樣,文件名包含文件路徑。 我試圖傳遞文件名而不傳遞路徑。 有什么辦法可以實現?

編輯:我檢查了IE 8,它只發送文件名而不是文件路徑。 此文件路徑破壞了僅要求文件名的服務器代碼。 想知道應該有一些屬性還是需要設置某些屬性,或者IE9對此有一些更改。

謝謝,JDP

在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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM