2016-12-09 103 views
0

所以我創建了這個JQuery腳本,我不知道如何更改文件類型(.png,.jpg等)和名稱。這裏有一個預覽:JQuery自定義文件名/類型

jQuery('<a/>', { 
    id: 'downloadFile', 
    href: 'https://www.roblox.com/asset/?id='+location.href.match(/(?:catalog|library|games)\/(\d+)/i)[1], // Don't mind the link 
    style: 'display:hidden;', 
    download: '' 
}).appendTo('body'); 

$("#downloadFile")[0].click(); 

是的,就是這樣我猜。回覆總是有幫助的。

+0

你爲什麼要更改文件類型?服務器響應是否包含「Access-Control-Allow-Origin」標頭? – guest271314

+0

我確定它的確如此。它也是一個原始文件(。),所以我想把它變成一個.png或類似的東西。 – iCookieBG

回答

0

如果服務器響應包含Access-Control-Allow-Origin標頭,則可以使用fetch()請求資源Response.blob()以獲得響應Blob。在第二個和第三個參數處將Blob響應作爲第一參數傳遞給File構造函數集合.name.type

File對象作爲參數創建的URL.createObjectURL()可變參考值,設置download屬性File.name,設置a元件的href到可變引用Blob URL。在clicka元素使用.one()window處附上focus事件以呼叫傳遞參考Blob URLURL.revokeObjectURL()以從存儲器釋放Blob URL

// fetch `.txt` file, 
 
// change file `.name` set `MIME` type to and download as `.json` 
 
let url = "https://gist.githubusercontent.com/guest271314/" 
 
+ "02d250fe055f6f7e4742221ed2b2db7f/raw/" 
 
+ "91c06caaa0944fc2cf6bcd335f0320c6de837a9c/arr.txt"; 
 
fetch(url) 
 
.then(response => response.blob()) 
 
.then(blob => { 
 
    let file = new File([blob], "file.json" 
 
      , {type: "application/json", lastModified: new Date().getTime()}); 
 
    console.log(file.type, file.name); 
 
    let blobURL = URL.createObjectURL(file); 
 
    jQuery('<a/>', { 
 
    id: 'downloadFile', 
 
    href: blobURL, 
 
    style: 'display:hidden;', 
 
    download: file.name 
 
    }).appendTo('body') 
 
    .on("click", function() { 
 
    $(window).one("focus", function() { 
 
     URL.revokeObjectURL(blobURL) 
 
    }) 
 
    })[0].click(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script>