2013-10-04 78 views
0

我嘗試做一個按鈕,下載圖像和我所做的是,做出這樣的功能:下載圖像

function download_image(){ 
    $file = $_POST['file']; 
    header('Content-Description: File Transfer'); 
    header("Content-type: application/octet-stream");//notice this content-type, it will force a download since browsers think that's what they should do with .exe files 
    header("Content-disposition: attachment; filename= ".$file.""); 
    readfile($file); 
} 

,當下載按鈕被點擊我進行這個js:

$.ajax({ 
     type:"POST", 
     url:'..address to../download_image', 
     data:{ 
      file:imgElem 
     }, 
     success:function(){ 
      alert('image downloaded'); 
     } 
    }); 

現在的問題是我沒有形象的名字,但編碼的圖像是這樣的:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABBgAAAEtCAYAAACibtPQAAAgAElEQVR4nO3dX28c150mYH+c+S57s5d7uVcFGMEGuQiwgW+ycCEAsdl4gQjGJqsyYIyCYEbwEDXKZD1KNLHVtjMZDeM/kmmWLJmOrSiOzViOJDJiHNtnLoLqLRarm8VDFfsU63mBBzabzWZ12/rp1MtTzSdCCKEoipBlWciyLFRVFbpSVdX8PlmWhTzPO+8nIiIiIiIiItPLE7PZLJRlGUIIoSzLUBRF5x3rgkFEREREREREpJ0nmh8oGEREREREREQkJvOCIc/z+U6GrrQvkVh2XxERERERERGZVo61g6H+nN0MIiIiIiIiItLME+0b+hYHy94QUkRERERERESmlSfKsgyz2SyEEMJsNjvw2yHyPO/c0WAHg4iIiIiIiIg080QIi39NZbNgaL8HQ11KiIiIiIiIiIgcukRCREREREREROS4UTCIiIiI...PHWSgveiOXekFY/8Rr2ZBZ9hO1+vu2t8Mt+7r2Frr2X0JH3Z7n+aECob3Ntvn1zeNoP+/2cXY9FwWDSNqZwtzsWqDX861rV8NRBUP99V3zc9G8zfN8/vXtOdr1NUct1tvPXUTis2iXQAiH3xCwvTOrOQOan2+v15pf03WSuuj71DOjXYC014Lt+3Z97xC6d2097ufSTvuyjeZusaMe9yQFQ/Pxu55L83gf5/OVdKNgkDORRdvRRESkO6c1N+tLMeos2sorIiIi44+CQUadrsZZREQW57TnZv0TKDsCREREzn4UDCIiIiIiIiJy4igYREREREREROTEUTCIiIiIiIiIyImjYBARERERERGRE0fBICIiIiIiIiInjoJBRERERERERE4cBYOIiIiIiIiInDgKBhERERERERE5cRQMIiIiIiIiInLiKBhERERERERE5MRRMIiIiIiIiIjIiaNgEBEREREREZET5z8AyGKspBK3ENIAAAAASUVORK5CYII="> 

所以問題我應該如何下載圖像?請幫助:(

回答

2

只需設置window.location到編碼URI,如

window.location.href = 'data:image/png;base64,iVBORw0KGgo... 

或者如果你想有文件,你也可以打開一個彈出窗口

http://jsfiddle.net/vaibviad/VE8Qn

名和擴展名,那麼你也可以嘗試這個

<a download="FILENAME.EXT" href="data:image/png;base64,asdasd...">Download</a> 

下面的鏈接是演示用的文件名和分機下載屬性

http://jsfiddle.net/vaibviad/VE8Qn/3/

注:Download attribute沒有得到廣泛支持

+0

我有一個可變imgElem即由圖像信息即'data:image/png:base64,...'我按照你的說法做了,但變量imgElem返回[object Object]。的代碼是這樣'window.location.href = '?管理員/ reportManager/download_image文件=' + imgElem;' – Robz

+1

這裏的演示http://jsfiddle.net/vaibviad/VE8Qn/ –

+0

但說到沒有圖像extention.is有什麼辦法讓擴展也 – Robz

1

JavaScript不能保存文件,所以在這種情況下,你需要返回一個url從您的API然後在您的success函數中,您將使用window.location = ....returned value...這將下載該文件。

如果需要演示,請讓我知道。

+0

請提供演示... – Robz