将dataURI转换为File以在Parse中使用--javascript

时间:2014-09-24 18:42:10

标签: javascript parse-platform data-uri

我能够按照一些步骤从选定的图像文件创建画布元素,然后从该画布元素创建图像。我需要这样做,所以发送到解析的图像不是一个巨大的文件。

现在我需要能够以文件的形式访问该图像并通过解析上传。 就如何访问创建的blob而言,我有点陷入困境。

考虑一下:

//upload post
$('#fileselect').bind('change', function(e) {
  readURL(this);
  setTimeout(function() {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    img = new Image();
    img.onload = function() {
      canvas.height = canvas.width * (img.height / img.width);
  /// step 1
      var oc = document.createElement('canvas'),
      octx = oc.getContext('2d');
      oc.width = img.width * 0.5;
      oc.height = img.height * 0.5;
      octx.drawImage(img, 0, 0, oc.width, oc.height);
  /// step 2
      octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5);
      ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5, 0, 0, canvas.width, canvas.height);
    }
    img.src = $(".previewupload").attr('src');
    var image2 = $('.imagereceive');

setTimeout(function() {

  var canvurl = canvas.toDataURL("image/png");
  image2.attr('src', canvurl);
  var name = "image1.jpg"; //This does *NOT* need to be a unique name
  var dataURL = canvas.toDataURL('image/jpeg', 0.5);
  var blob = dataURItoBlob(dataURL);
  var fd = new FormData(document.forms[0]);
  fd.append("canvasImage", blob);
  var file = fd;
  var name = "image1.jpg"; //This does *NOT* need to be a unique name
  var parseFile = new Parse.File(name, file);

  $(this).attr('data-name', nameCurrent);
  var imgname = $(this).attr('data-name');

  $('#uploadbutton').click(function(e) {
    var currentUser = Parse.User.current();
    var statusupdate = $('#statusupdateform').val();
    parseFile.save().then(function() {
      var nameCurrent = currentUser.getUsername();
      var wall = new Parse.Object("wall");
      wall.set("imagefile", parseFile);
      wall.save({
        success: function() {
          alert(parseFile.url());
        },
        error: function() {
          alert("upload failed. please try again!");
        }
       });
     });
   });
  }, 200);
 }, 1000);
});

感谢您提出任何建议/帮助

已更新

通过添加以下行解决

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

0 个答案:

没有答案