request.js
라이브러리를 사용하여 request.post를 사용하여 box.com에 파일을 업로드하려고합니다.상자에 업로드 할 때 오류 개체가없는 상태 코드 400
나는 응답에서 400의 리턴 코드와 널 (NULL) 본문을 일관되게 얻습니다. 상자가보고있는 실제 오류를 얻는 방법을 모릅니다. 콜백에 대한 err
인수는 null이므로 box.com의 응답이 있지만 상태 코드 400 및 null 본문이 있습니다.
참고로 업로드를 성공하면 curl을 사용하므로 인증 토큰 등이 정상입니다. 나는 아래의 함수를 http://echo.200please.com '이라고 지적했다. 그리고 그것은 내가 보내고있는 HTTP POST 요청이 잘된 것처럼 보인다. 상자에 어떤 오류가 표시되는지 보려면 어떻게해야합니까? 내가 echo.200please.com 가리 키도록 URL을 변경하는 경우
request = require"request");
UploadFile = function(filename, callback) {
var formData = {
attributes: JSON.stringify({
name: filename,
parent: { id: '' + 2764913765 }
}),
file: fs.createReadStream('./temp.bin')
}
var options = {
url: 'https://upload.box.com/api/2.0/files.content',
headers: { Authorization: 'Bearer ' + tokens.access_token},
formData: formData
}
request.post(options,
function(err, response, body) {
if (err) {
console.log('Error Uploading the file');
} else {
console.log('returned:' + body + JSON.stringify(response.headers))
}
});
, 나는 echo.200please.com에서 얻을 응답은 파일 업로드 요청에 대한 올바른 형식 것으로 보인다, 다음과 같습니다.
> POST/HTTP/1.0
Host: echo.200please.com
Connection: close
Content-Length: 1951
Authorization: Bearer bVPDzG8PgIVRNoqb5LOzD61h6NXhJ6h0
content-type: multipart/form-data; boundary=--------------------------799592280904953105406767
----------------------------799592280904953105406767
Content-Disposition: form-data; name="attributes"
{"name":"testchunkname.1","parent":{"id":"2764913765"}}
----------------------------799592280904953105406767
Content-Disposition: form-data; name="file"; filename="temp.bin"
Content-Type: application/octet-stream
<... file data ...>
그것은 지나요 파일을 스트리밍하는 대신 버퍼링하면 어떤 차이가 있습니까? – generalhenry
그걸 시도해 .. 아무런 차이가 없다. 커맨드 라인에서 똑같은 컬 요청을 보내면 성공합니다. curl 명령에 잘못된 인증 토큰을 넣으면 자동으로 실패하므로 javascript 요청 명령이 인증에 실패했다는 사실을 알게되었습니다. 그러나, 나는 그것이 실패 할 이유를 알아낼 수 없다. 나의 get 요청은 모두 같은 인증 토큰과 동일한 자바 스크립트 요청 코드로 성공했다. – user1936097