2013-05-13 93 views
1

我试图上传图片进行解析,然后将它们附加到模型上,但是无论何时上传一个图片,它都会返回成功上传,但该网址包含损坏的图片链接。使用Javascript(CoffeeScript)和REST API将图片上传到Parse

例如:

http://files.parse.com/aac0413c-eada-4602-9451-2ee5da7d1241/22eaa50b-1e61-4744-abf9-a57ba9f4123f-test.jpg

这里的上传代码:

getImg: -> 
CameraHelper.fileUpload (file) => 
    @file = file 
    forge.file.URL file, (url) => 
     @fileURL = url 
     @$("#uploadImg").addClass("fadeIn").css("background-image", "url(#{url})") 
     @$("#removeImg").css("display", "inline") 
    , (content) -> 
     error "Error finding Image" 
, -> 
    debug "Upload Cancelled" 


    serverUrl = 'https://api.parse.com/1/files/test.jpg' 
    parseFile = _.extend @file, 
     type: "image/jpeg" 
     name: "share.jpg" 

    $.ajax 
     type: "POST", 
     beforeSend: (request)-> 
      request.setRequestHeader "X-Parse-Application-Id", 'MY-APP-ID' 
      request.setRequestHeader "X-Parse-REST-API-Key", 'MY-REST-API-ID' 
      request.setRequestHeader "Content-Type", "image/jpeg" 
     url: serverUrl 
     data: parseFile 
     processData: false 
     contentType: false 
     success: (data) -> 
      alert "File available at: " + data.url 
     error: (data) -> 
      obj = jQuery.parseJSON(data) 
      alert obj 

CameraHelper = 
fileUpload: (success, err) -> 
    if APP 
     forge.file.getImage 
      saveLocation: "file" 
      source: "camera" 
      height: "620px" 
      width: "620px" 
     , (file) -> 
      debug "Successfully uploaded img" 
      success?(file) 
     , (content) -> 
      error "Error in uploading img", content 
      err?() 
    else 
     debug "Sorry that feature is not currently available on the mobile web." 

CameraHelper 注:我使用的是triggerIO,也引用:https://www.parse.com/questions/uploading-files-to-parse-using-javascript-and-the-rest-api无济于事

parseFile是我想要上传的图片

回答

1

我不确定Parse在POST正文中的具体含义,但我认为他们希望整个身体都是图像数据,不需要多部分编码。

这意味着你需要做两件事情:

首先,上传文件时,你应该使用files参数,而不是data。见https://trigger.io/docs/current/api/modules/request.html#forgerequestajaxoptions。无论何时上传文件,这都是真实的,而不仅仅是使用Parse。

其次,如我认为解析不希望编码的POST正文,请使用fileUploadMethod: "raw"参数将图像数据直接转储到请求中。