2014-11-03 43 views
0

我不太明白下面的代碼中發生了什麼,如果有人能指導我正確的方向,也許我會更容易得到相同的變量如在else語句中,但手動(如果不支持FileReader api)。我怎樣才能獲得與FileReader API手動相同的數據結構

Basicly在我的if語句我想打一個Ajax調用和變換圖片以base64字符串,並將其保存到讀變量相同的結構,我else語句:

$('#file').on('change', function(){  

     if(typeof FileReader === "undefined") { 
      //AJAX CALL HERE 
     } 
     else { 
      var reader = new FileReader(); 
     } 

     reader.onload = function(e) { 
      options.imgSrc = e.target.result; 
      cropper = $('.imageBox').cropbox(options); 
     } 
     reader.readAsDataURL(this.files[0]); 
     this.files = []; 

     console.log(reader); 
    }) 

控制檯日誌中else語句中的讀取變量顯示如下:Picture

+0

稍微更清楚。你想達到什麼? reader.readAsDataURL()將爲您提供Base64代碼,您可以將其存儲在String中並使用ajax傳遞給服務器。 – 2014-11-03 07:36:53

+0

否我想發送圖片到服務器並轉換到Base64,然後以與reader.readAsDataURL()相同的格式返回字符串 – Orangutan 2014-11-03 07:39:13

+0

然後您的請求應該是Multipart。使用 2014-11-03 07:40:29

回答

0

如果沒有某種Polyfiller,就不能這樣做,原因是Javascript(沒有FileReader API)無法處理文件並且無法傳遞它們。您將無法使用Javascript將文件發送到服務器。

有2種方法可以做到這一點:

  1. 導致出現回傳在其中獲取服務器 上的文件,然後將其轉換爲Base64(可在PHP/ASP來完成。 NET(和 可能很多人的))

  2. 或者你可以使用一個Polyfiller如 moxie,這將加載當 頁面加載,如果不支持的文件API也將增加一個 的Flash/Silverlight的插件模仿支持。

+0

如何導致回發發生?我的意思是在使用ajax和'FormData'之前,我已經將文件發送到服務器,但是您是否還記得其他一些內容? – Orangutan 2014-11-03 08:03:06

+0

你在使用什麼服務器端? PHP/ASP.NET等? – Nunners 2014-11-03 08:10:09

+0

這將是PHP – Orangutan 2014-11-03 08:12:05

相關問題