如何使用javascript API从Parse上传图像

时间:2013-05-07 06:30:38

标签: javascript cordova parse-platform

问题:

我有上传文件的Url(例如http://files.parse.com/../../..jpg)和它的fileName,现在需要使用Only via Javascript从该Url(Parse.com)中检索相应的文件。任何人都有答案让我知道。非常感谢你!

代码:(上传):

function uploadFn(fileName,fileType,fileData,c){ 
        var parseUrl='https://api.parse.com/1/files/'+fileName; 
$.ajax({
        type:'post',
        beforeSend:function(req){
                req.setRequestHeader('X-Parse-Application-Id',myParseAppId);
                req.setRequestHeader('X-Parse-REST-API-Key',myParseRestApiId);
                req.setRequestHeader('Content-Type',fileType); // fileType always == 'image/jpg;'
            },
        url:parseUrl,
        data:fileData,
        processData:false,
        contentType:false,
        success:function(rslt){
            if(rslt){
            alert('Upload success\n Filename:'+rslt.name+'\n Url:'+rslt.url);
                    imgObj.save({curUser:curUser,fileName:rslt.name,fileUrl:rslt.url,fileId:c},
                                {success:function(succ){
                                    alert('File info saved!');
                                    },error:function(err){ 
                                        alert('Error:'+err.code);
                                        }
                                }) // save


                }
            },
        error:function(err){
                //var errObj=jQuery.parseJSON(err);
                alert('Error:'+err.responseText);
            }
    });
  }
  

上传不是问题。它工作正常!仅用于从Parse.com检索

(toRetrieve)[我试过:]

function fetchImg(url){
  $.ajax({
   url:url,
   async:false,
   type:'POST',
   beforeSend:function(req){
        req.setRequestHeader('X-Parse-Application-Id',myParseAppId);
        req.setRequestHeader('X-Parse-REST-API-Key',myParseRestApiId);
        req.setRequestHeader('Content-Type','image/jpg');
    },
   complete:function(rslt){
        $('#imgId').attr('src','data:image/jpg;base64,'+rslt.responseText);
    },
   success:function(){//Success
    },
   error:function(err){
        alert('Error: '+err.responseText+'\nStatus: '+err.statusText);
    }
   })
  }

[输出:

'Error-msg>此资源不允许使用指定的方法'状态:方法不允许!。

注意:¤(我将fileName,fileUrl保存到Parse DataBrowser,并使用它来尝试检索上传的文件。)

¤(应用基于'Phonegap')

¤我是Parse / Javascript的新手。

非常感谢!的 *

2 个答案:

答案 0 :(得分:0)

点击此处:Load contents of image from camera to a file

基本上:with the info in this post。 。非常感谢Raymond Camden!

function gotPic(data) {

window.resolveLocalFileSystemURI(data, function(entry) {

var reader = new FileReader();

reader.onloadend = function(evt) {
    var byteArray = new Uint8Array(evt.target.result);
    var output = new Array( byteArray.length );
    var i = 0;
    var n = output.length;
    while( i < n ) {
        output[i] = byteArray[i];
        i++;
    }                
    var parseFile = new Parse.File("mypic.jpg", output);

    parseFile.save().then(function(ob) {
            navigator.notification.alert("Got it!", null);
            console.log(JSON.stringify(ob));
        }, function(error) {
            console.log("Error");
            console.log(error);
        });

}

reader.onerror = function(evt) {
      console.log('read error');
      console.log(JSON.stringify(evt));
  }

entry.file(function(s) {
    reader.readAsArrayBuffer(s);
}, function(e) {
    console.log('ee');
});

});
}

答案 1 :(得分:0)

我认为检索图像方法应该是GET而不是POST来处理你的ajax请求。