簡體   English   中英

如何在具有多個擴展名的javascript中打開文件?

[英]how to open a file in javascript with multiple extensions?

我在這里面臨一個小問題...我想編寫一個javascript函數來打開具有不同擴展名的文件,我已經編寫了一個可以打開文件的函數,但是其擴展名是用代碼硬性編寫的,如何使其動態化? 像不是打開“ file1.pdf”或“ file1.png”,我想將擴展名存儲為變量並動態打開。 這是代碼:-

<script>
    function viewCM() {

        var transferID = document.getElementById("theTransferID").value;

        $.get("/Uploads/" + transferID + ".pdf")
            .done(function () {
            // Do something now you know the file exists.
                window.open("/Uploads/" + transferID + ".pdf", '_blank', 'fullscreen=yes');
            }).fail(function () {
            // File doesn't exist - do something else.
                alert("File was not found");
            })

        return true;
    }
</script>

上面的功能可以完美地與任何類型的擴展一起使用,但是我不知道如何使擴展成為動態
提前致謝

編輯 :我沒有從服務器獲取文件名,其想法只是我有一個上傳按鈕,用於上傳與特定“傳輸”相關的文件,並且我將上傳文件的名稱設置為transferID.whatever extension當我想打開文件時,我只寫了我發布的代碼。 因此,我不會在服務器上搜索文件名。

也許您可以在名稱中的點后找到內容以搜索類型,這只是一個想法。

 var afterDot = str.substr(str.indexOf('.'));

然后根據類型執行您的代碼。 (這可以大大改善)。

編輯:

 var transferID = document.getElementById("theTransferID").value; 
 var extension = transferID.substr(transferID.indexOf('.'));

現在您有這種可能性:

if(extension == ".pdf"){  $.get("/Uploads/" + transferID + ".pdf")
        .done(function () {//...}

跟進原始問題的評論:

function viewCM(fileExtension) {
    var transferID = document.getElementById("theTransferID").value;

    $.get("/Uploads/" + transferID + "." + fileExtension)
        .done(function () {
        // Do something now you know the file exists.
            window.open("/Uploads/" + transferID + "." + fileExtension, '_blank', 'fullscreen=yes');
        }).fail(function () {
        // File doesn't exist - do something else.
            alert("File was not found");
        })

    return true;
}

如果可以將文件擴展名傳遞給函數, ifviewCM()內不必有任何if語句(除非您計划執行某種類型的驗證)。

它將根據文件類型自動調整。 意味着如果pdf然后打開pdf查看器,則excel應該打開excel window.open(file Name);

對於面臨相同問題的任何人,我都采取了某種“幼稚”的解決方法,通過使多個JavaScript函數打開各種類型的文件來解決此問題。
它很簡單:嘗試讀取pdf文件,如果您不能調用一個讀取png文件的函數,則等!

<script>
    function viewCM() {

        var transferID = document.getElementById("theTransferID").value;

        $.get("/Uploads/" + transferID + ".pdf")
            .done(function () {
            // Do something now you know the file exists.
                window.open("/Uploads/" + transferID + ".pdf", '_blank', 'fullscreen=yes');
            }).fail(function () {
            // File doesn't exist - call the next function.
                viewCMPng();
            })

        return true;
    }

    function viewCMPng() {

        var transferID = document.getElementById("theTransferID").value;

        $.get("/Uploads/" + transferID + ".png")
            .done(function () {
            // Do something now you know the file exists.
                window.open("/Uploads/" + transferID + ".png", '_blank', 'fullscreen=yes');
            }).fail(function () {
            // File doesn't exist - show alert message.
                alert("File was not found");
            })

        return true;
    }

</script>

暫無
暫無

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

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