我嘗試重命名下載屬性文件,但它不工作。文件下載重命名工作不
<a href="https://jsfiddle.net/img/logo.png" download="something.png">OK</a>
我嘗試重命名下載屬性文件,但它不工作。文件下載重命名工作不
<a href="https://jsfiddle.net/img/logo.png" download="something.png">OK</a>
只如果該文件是在同一個原點,所以如果你可以下載一個外部文件與CORS +阿賈克斯,那麼你可以保存BLOB使用自定義名稱
$('a').click(function(evt){
evt.preventDefault();
var name = this.download;
// we need a blob so we can create a objectURL and use it on a link element
// jQuery don't support responseType = 'blob' (yet)
// So I use the next version of ajax only avalible in blink & firefox
// it also works fine by using XMLHttpRequest v2 and set the responseType
fetch("https://crossorigin.me/" + this.href)
// res is the beginning of a request it only gets the response headers
// here you can use .blob() .text() .json or res.arrayBuffer() depending
// on what you need, if it contains Content-Type: application/json
// then you might want to choose res.json()
// all this returns a promise
.then(res => res.blob())
.then(blob => {
$("<a>").attr({
download: name,
href: URL.createObjectURL(blob)
})[0].click();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="https://jsfiddle.net/img/logo.png" download="something.png">OK</a>
它的工作原理,但它花了一點時間,我將離開使用像'crossorigin.me'的CORS代理作爲最終選擇。 – Youssef
我使用'fetch(「https://crossorigin.me/」+ this.href)'而不是'https:// crossorigin.me /'就像這個'fetch(this.href)'一樣,它可以解釋我爲什麼? – Youssef
我剛剛添加了crossorigin.me cuz我不知道你試圖獲取的資源是否已啓用CORS ..所以這個文件可能已經有了Access-Control-Allow-Origin:*響應頭文件 – Endless
從你鏈接的文檔:
如果HTTP標頭內容處置:是存在,並給出了不同的文件名比這個屬性,HTTP標頭的優先級高於此屬性。
我的猜測是您要鏈接的服務器設置此標頭。
此外,如果你要鏈接到外部資源很可能將無法正常工作:
此屬性僅授予具有相同來源的資源鏈接。
如果'Content-Disposition'存在,如何覆蓋優先級?因爲我認爲這是我的問題,因爲與資源的鏈接是同源的。 – Youssef
什麼是你想.append什麼? –
問題不在追加。 – Youssef
好的,您希望下載/重命名的文件類型是什麼? –