2014-07-08 79 views
2

我想上传图片到Parse.com,我没有这些文件,但dataURL(因为我调整了图像大小),但需要上传图片文件。如何从dataURL创建图像文件?

欢迎任何提示。

下面是更详细的信息的代码:

// First want to resize the image, where the result is a dataURL 
var dataURL; 
function resizePicture(file) { // This file is the original image 
    var reader = new FileReader(); 
    reader.onloadend = function() { 
     var tempImg = new Image(); 
     tempImg.src = reader.result; 
     tempImg.onload = function() { 
      var MAX_WIDTH = 100; 
      var MAX_HEIGHT = 150; 
      var tempW = tempImg.width; 
      var tempH = tempImg.height; 
      if (tempW > tempH) { 
       if (tempW > MAX_WIDTH) { 
        tempH *= MAX_WIDTH/tempW; 
        tempW = MAX_WIDTH; 
       } 
      } else { 
       if (tempH > MAX_HEIGHT) { 
        tempW *= MAX_HEIGHT/tempH; 
        tempH = MAX_HEIGHT; 
       } 
      } 
      var canvas = document.createElement('canvas'); 
      canvas.width = tempW; 
      canvas.height = tempH; 
      var ctx = canvas.getContext("2d"); 
      ctx.drawImage(this, 0, 0, tempW, tempH); 
      dataURL = canvas.toDataURL("image/jpeg"); // How can I convert this dataURL to an image file? 
     } 
    } 
    reader.readAsDataURL(file); 
} 

// Then, want to upload the image to Parse.com. 
function savePicture() { 
    var name = "productPicture.jpg"; 
    var parseFile = new Parse.File(name, dataURL); // Here instead of dataURL, I need an image file. 
    parseFile.save().then(function() { 
      // successful save 
     }, function(error) { 
      alert("The file either could not be read, or could not be saved to Parse."); 
    }); 
} 

回答

4

作为每API DocumentationParse.File(name, data, type)

数据

该文件的数据,或者:

  1. 一个字节值数组的数组,或
  2. 一个对象,如{base64:“...”}与一个base64编码的字符串。
  3. 使用文件上传控件选择的File对象。

(3)仅适用于Firefox 3.6 +,Safari 6.0.2+,Chrome 7+和IE 10+。

理论上这应该工作:

// get everything after "base64," 
var base64 = dataURL.split('base64,')[1]; 
var parseFile = new Parse.File(name, { base64: base64 });