2014-11-03 38 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

相关问题