2017-02-25 11 views
2

Ajaxを使用してイメージファイルを取得し、それを解析ファイルとして保存しようとしています。私はプロセスに新たなんだ、これは私がこれまで持っているものです:ParseファイルをURLから取得して解析ファイルとして保存

$.ajax({ 
     type: "GET", 
     url: url, 
     headers:{'Content-Type':'image/jpeg','X-Requested-With':'XMLHttpRequest'}, 
     processData: false, 
     success: function (data) { 

      var name = "photo.jpg"; 
      var img = btoa(encodeURIComponent(data)); 

      var parseFile = new Parse.File(name, { base64: img }); 

      parseFile.save().then(function() { 

       console.log('Saved parse file: ' + parseFile.url()); 

      }, function (error) { 

       console.log("error: " + error.message); 
      }); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

      console.log('error on uploadPhoto: ' + xhr + ' ' + ajaxOptions + ' ' + thrownError); 
     } 
    }); 

ファイルが保存されているようですが、私が得るすべては空のファイルです。 Parse Docsでは、base64でエンコードされたStringまたはバイト値の配列を使用できます。

私が間違っているのは、より良いアプローチですか?

答えて

0

XMLHttpRequestを使用して別のアプローチを使用することに決めました。コードは次のとおりです。

var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 

     if (this.readyState == 4 && this.status == 200) { 

      var reader = new window.FileReader(); 

      reader.readAsDataURL(this.response); 

      reader.onloadend = function() { 

       var name = "photo.jpg"; 

       var base64data = reader.result; 

       var parseFile = new Parse.File(name, {base64: base64data}); 

       parseFile.save().then(function() { 

        console.log('Saved parse file: ' + parseFile.url()); 

       }, function (error) { 

        console.log("error: " + error.message); 
       }); 
      } 
     } 
    }; 

    xhr.open('GET', url); 
    xhr.responseType = 'blob'; 
    xhr.send(); 

このファイルは、解析ファイルとして正しく保存されています。

関連する問題