簡體   English   中英

在IE中獲取上傳文件的名稱

[英]Getting the name of an uploaded file in ie

我有一個文件上傳按鈕,用戶單擊上傳功能,然后在選擇文件時上傳站點。 這可以完美地工作。

但是,我遇到了文件名錯誤,即在Chrome和Firefox中,我可以使用表單數據並從中獲取文件名。 但是在ie中,它似乎抓住了整個路徑並將其用作名稱。 還有其他方法可以從上傳的文件中獲取文件名嗎? 這樣就可以保持一致,並且實際上只是文件名?

我的代碼如下所示。

var file = $(this).prop("files")[0]; 
var form = new FormData($('input[name^="media"]'));

form.append("fileName", file.name);

文件的ie名稱

C:UsersUsersNameFolderNameMoreComplicatedFolderNameFileDocumentName.docx

並在所有其他瀏覽器中將其抓取為

FileDocumentName.docx

嘗試通過整個表格。 像這樣

var myForm = document.getElementByTagName('form');
var form = new FormData();

form.append("myForm", myForm);

只要您使用的是IE 10及更高版本,此方法就應該對您有用。 我已經在IE-11和Chrome上測試過

<html>

<head>
    <title>Get Name of uploaded file</title>

    <script type="text/javascript">

        function fetchFileName(fileObjId) {

            var fileObj = document.getElementById(fileObjId);
            var txt = "";

            if ('files' in fileObj) {
                if (fileObj.files.length == 0) {
                    txt = "Select one or more files.";
                }
                else {
                    for(var i = 0; i < fileObj.files.length; i++) {

                        txt += "<br><strong>" + (i+1) + ". file</strong><br>";
                        var file = fileObj.files[i];

                        if ('name' in file) {
                            txt += "name: " + file.name + "<br>";
                        }
                        if ('size' in file) {
                            txt += "size: " + file.size + " bytes <br>";
                        }
                    }
                }
            }
            else {
                if(fileObj.value == "") {
                    txt += "Select one or more files.";
                }
                else {
                    txt += "The files property is not supported by your browser!";
                    txt  += "<br>The path of the selected file: " + fileObj.value;
                }
            }

            document.getElementById("demo").innerHTML = txt;

            return false;
        }

    </script>
</head>

<body>

    File to Upload: <input type="file" name="uploadFile" id="uploadFile" />&nbsp;
    <input type="button" value="Get File Name" onclick="return fetchFileName('uploadFile')" />

    <br/><br/>
    Output: <span id="demo"></span>

</body>

</html>

也請參閱-https: //www.w3schools.com/jsref/prop_fileupload_files.asp

在Internet Explorer中,您可以獲得完整路徑,而不僅僅是文件名。

您可以使用此正則表達式/[^\\/\\\\]*$/匹配所需的輸出。 喜歡:

var file = $(this).prop("files")[0]; 
var form = new FormData($('input[name^="media"]'));

// Use the regex here to get the desired output
var file_name = file.name.match(/[^\/\\]*$/)[0];

form.append("fileName", file_name);

暫無
暫無

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

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