2014-09-23 3 views
6

나는 며칠 동안 HTTP 요청에서 검색 한 파일을 저장하는 데 어려움을 겪고 있습니다.CloudCode를 사용하여 Parse.com의 URL에서 이미지 저장

Parse.Cloud.httpRequest({ 
    url: "https://ss1.4sqi.net/img/categories_v2/food/vietnamese_88.png", 
    success: function(httpImgFile) 
    { 
     console.log("httpImgFile: " + String(httpImgFile.buffer)); 
     var imgFile = new Parse.File("imgFile1.png", httpImgFile.buffer);            
     object.set("location", "newYork"); //object is a PFObject retrieved earlier 
     object.set("icon1", imgFile); 
     object.save(null, { 
      success: function(gameScore) { 
      response.success("saved object"); 
      }, 
      error: function(gameScore, error) { 
      response.error("failed to save object"); 
      } 
     });  
    }, 
    error: function(httpResponse) 
    { 
     console.log("unsuccessful http request"); 
     response.error(responseString); 
    } 
}); 

내가 오류는 다음과 같습니다 : 여기 내 코드입니다

Failed with: TypeError: Cannot call method 'then' of undefined 
    at Object.b.File.save (Parse.js:2:14963) 
    at null.<anonymous> (Parse.js:2:30041) 
    at e (Parse.js:2:6339) 
    at Parse.js:2:7092 
    at g (Parse.js:2:6829) 
    at c.extend.then (Parse.js:2:7077) 
    at Parse.js:2:30016 
    at Array.forEach (native) 
    at Function.x.each.x.forEach (Parse.js:1:661) 
    at Function.b.Object._deepSaveAsync (Parse.js:2:29993) 

모든이에 대한 이상한 부분은 내가 수정할 수 있어요 object.set("icon1", imgFile) 라인을 포함 할 때 오류가 발생합니다 있다는 것입니다 object의 위치는 문제가되지 않습니다. 이 오류는 전적으로 imgFile을 (를) 저장하려고 할 때 발생합니다. icon1

도움이 될만한 점이 있으면 감사하겠습니다. 감사!

+0

여기서 'object' 변수의 출처는 어디입니까? '객체'의 타입은 무엇입니까? – wayne

+0

개체는 "외부 목록"유형의 PFObject입니다. 아마 도움이되지 않을 것입니다. –

답변

4

문서 (https://parse.com/docs/js_guide#files)에 따라 다른 개체에 설정하기 전에 구문 분석 파일을 저장해야합니다. 일반적으로

는 :

imgFile.save().then(function() { 

    ... 
    object.set("icon1", imgFile); 

    return object.save(); 

}).then(function (gameScore) { 
    response.success("saved object"); 
}, function (error) { 
    response.error("failed to save object"); 
}); 

나는 또한이 같은 일련의 요청을 처리 할 때 조금 더 쉽게로, 약속의 패턴을 설명하기 위해 함수의이 부분을 다시 썼다.

+0

안녕하세요. 제안 해 주셔서 감사합니다. 내가 설명했던 것처럼 설정하기 전에 imgFile을 저장하려고 시도했지만 여전히 불행하게도 같은 오류가 발생합니다. 다운로드 한 img 파일의 형식과 관련이 있다고 생각합니까? –

+0

다음을 시도해 볼 수 있습니다. var imgFile = httpImgFile.buffer.toString ('base64'); –

+0

톰 제안에 감사드립니다. 불행히도 여전히 운이 없다 : Error : Uncaught String에서 Parse.File을 만드는 것은 아직 지원되지 않는다. (코드 : 141, 버전 : 1.2.21) 입력 한 결과 블록 –

관련 문제