2017-09-19 181 views
0

我有一個通過URL上傳圖片的功能。 我想更改文件的名稱,以下載文件:'image.jpg'。更改下載的文件名

這裏就是我所做的:

public downloadImageJpeg(instanceUID: string, format: string): string { 
    var a = document.createElement("a"); 
    a.download = 'image.jpg'; 
    a.href = this.getRootUrl() + `/dicom/instances/${instanceUID}/wado/jpg`; 

    var e = document.createEvent("MouseEvents"); 
    e.initMouseEvent("click", true, false, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    a.dispatchEvent(e); 
} 

我的圖片上傳,但其名稱不會改變,這是「jpg.jpg」。你知道爲什麼它不是'image.jpg'?

//////////////編輯//////////////:

不過,我覺得我的錯誤來自a.href。在一些例子中,我看到他有參數。 我嘗試這樣做:

a.href = "data:image/jpg;base64," + this.getRootUrl() + `/dicom/instances/${instanceUID}/wado/jpg`; 

更改文件名很好,但沒有下載即時通訊,這使我的「網絡故障錯誤」

+0

我嘗試它在純js,它爲我工作...你的名字是什麼意思沒有改變,當你點擊鏈接(或觸發事件)的默認建議名稱是jpg.jpg'?你使用的是什麼瀏覽器? –

+0

@ m.nachury 是的,當我點擊調用我的函數'downloadImageJpeg'的按鈕時,它會自動下載一個名爲'jpg.jpg'而不是'image.jpg'的文件。我使用Google Chrome。 – Floriane

+0

你可以在不同的瀏覽器下試試這個,如果他認爲數據源是可能由角度引起的「交叉源」,那麼有時忽略下載屬性。試試在不同的瀏覽器下看看是否是這樣。 –

回答

0

以下功能正常工作:

export function download(url: string, filename: string) { 
    var a = document.createElement('a'); 
    if (a.click) { 
    // Use a.click() if available. Otherwise, Chrome might show 
    // "Unsafe JavaScript attempt to initiate a navigation change 
    // for frame with URL" and not open the PDF at all. 
    // Supported by (not mentioned = untested): 
    // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click) 
    // - Chrome 19 - 26 (18- does not support a.click) 
    // - Opera 9 - 12.15 
    // - Internet Explorer 6 - 10 
    // - Safari 6 (5.1- does not support a.click) 
    a.href = url; 
    a.target = '_parent'; 
    // Use a.download if available. This increases the likelihood that 
    // the file is downloaded instead of opened by another PDF plugin. 
    if ('download' in a) { 
     a.download = filename; 
    } 
    // <a> must be in the document for IE and recent Firefox versions. 
    // (otherwise .click() is ignored) 
    (document.body || document.documentElement).appendChild(a); 
    a.click(); 
    a.parentNode!.removeChild(a); 
    } else { 
    if (window.top === window && 
     url.split('#')[0] === window.location.href.split('#')[0]) { 
     // If _parent == self, then opening an identical URL with different 
     // location hash will only cause a navigation, not a download. 
     var padCharacter = url.indexOf('?') === -1 ? '?' : '&'; 
     url = url.replace(/#|$/, padCharacter + '$&'); 
    } 
    window.open(url, '_parent'); 
    } 
} 

來源

來自PDF查看器:https://github.com/mozilla/pdf.js/blob/94089960c04d7f59eb637d6dc63944115bbc539d/web/download_manager.js#L29-L63

+0

我不明白.. 它也不工作..我總是下載一個文件:'jpg.jpg' – Floriane