2017-02-10 48 views
-2

更新工作:最後,我找出原因我自己,理由是:其實我用角的NG-HREF的同時,其前綴一個unsafe的傳輸數據的URL,我必須配置編譯器服務放棄這樣的限制:dataURL不會爲<a>

.config([ 
    '$compileProvider', 
    function($compileProvider) 
    { 
     $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/); 
     // Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...) 
    } 
]) 

其中約舉行了會談: Angular changes urls to "unsafe:" in extension page


全部:

我想要做的是讀取圖像dataURL中,並給它一個標籤作爲下載:

<input type='file' name='doc' /> 
<a href="#" download="data">Download</a> 
<script> 
      var fileOBJ = $("input")[0] 
         .files[0]; 
      var reader = new FileReader(); 
      reader.onload = function(e){ 
       $("a")[0].href=e.target.result; 
      } 
      reader.onerror = function(err){ 
       console.log(err); 
      } 
      reader.readAsDataURL(fileOBJ); 
</script> 

下載總是失敗。

但是,如果我使用<img>而不是<a>,則圖像可以顯示出來。我不知道什麼是錯的<a>鏈接

回答

1

指定鏈接上的atrribute download。就像這樣:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='file' name='doc' /> 
 
<a download="filename" href="#">Download</a> 
 
<script> 
 
    $("input").change(function() { 
 
    var fileOBJ = $("input")[0] 
 
     .files[0]; 
 
    var reader = new FileReader(); 
 
    reader.onload = function(e) { 
 
     $("a")[0].href = e.target.result; 
 
     // if you want to change the download filename 
 
     // $($("a")[0]).attr("download", "some other filename"); 
 
    } 
 
    reader.onerror = function(err) { 
 
     console.log(err); 
 
    } 
 
    reader.readAsDataURL(fileOBJ); 
 
    }) 
 
</script>

+0

也許描述了包括'更改'事件處理程序在答案,這是問題'''問題? – guest271314

1

你嘗試調用readAsDataURL在有選擇的任何文件,是什麼引發錯誤。選擇某個文件後使用此方法。

var reader = new FileReader(); 
reader.onload = function(e){ 
    $("a")[0].href = e.target.result; 
}; 

reader.onerror = function(err){ 
    console.log(err); 
}; 

$('#inpFile').on('change',function(){ 
    reader.readAsDataURL(this.files[0]); 
});