2016-10-10 9 views
0

Dropbox Javascript SDK를 사용하여 클라이언트 측의 Webapp 자체에 파일을 다운로드하려고합니다.Dropbox JavaScript SDK를 사용하여 파일을 다운로드 할 때 문제가 발생했습니다.

웹 응용 프로그램의 폴더에만 파일을 다운로드하고 싶다는 것을 분명히하고 싶습니다. 보안 문제로 인해 실제로 가능하지 않을 수 있음을 이해합니다. 나는 다운로드로 발생하는 않는 것을 볼 확실히 할 수

$scope.testDownload = function() { 
    console.log('Testing Download'); 
    dbx.filesDownload({path: '/Collorado Springs.jpg'}) // Just a test file 
    .then(function(response) { 
     console.log(response); 
    }) 
    .catch(function(error) { 
     console.log(err); 
    }); 
}; 

:

http://dropbox.github.io/dropbox-sdk-js/index.html

http://dropbox.github.io/dropbox-sdk-js/Dropbox.html#filesDownload__anchor

이 내 컨트롤러 코드 :

난에서 제공하는 문서를 다음입니다 아래 그림과 같이 Chrome 네트워크 도구에 표시됩니다.

(내가 그렇게 여러 개의 링크를 삽입이 공유 "링크"내가 생성 해석 할하시기 바랍니다 충분한 명성을하지 않음)

https : //로 www.dropbox.com/s/s0gvpi4qq2nw23s/dbxFilesDownload.JPG?dl=0

나는 이것이 파일 다운로드 작업에 대한 지식이 부족하거나 JavaScript를 잘못 사용했다고 생각합니다.

제공 할 수있는 도움에 미리 감사드립니다.

+0

을 정확하게에 붙어 무엇입니까? 예상되는 로그 문을 얻은 것 같습니다. 사용자에게 데이터를 제공하여 컴퓨터에 다운로드 할 방법을 찾고 있다면 [이 예] (https://github.com/dropbox/dropbox-sdk-js/blob/master/examples/)를 확인하십시오. download/index.html # L51). (다른 API 메소드이지만 같은 방식으로 작동합니다.) – Greg

+0

명확성이 부족하다는 사과. 전반적인 목표는 사용자 드롭 박스에서 webapp 자체 내의 '다운로드'폴더로 파일을 다운로드하는 것입니다 (클라이언트 또는 서버 측 일 수 있습니다.). 나는 사용자 다운로드 폴더를 의미하지는 않습니다. 나는 당신이 친절하게 참조한 방법을 시도했고 그것은 당신이 말하는 것을합니다. 그것은 불행히도 제가 원한 것이 아닙니다. 'filesDownload'메서드를 사용하여 다운로드 할 수 있지만 결과 파일을 이동하거나 원하는 결과를 얻는 방법을 모르겠습니다. 아이디어는 자바 스크립트로 모든 일이 뒤에서 발생한다는 것입니다. – LJH

+0

잘 모르겠지만 Dropbox API 호출이 제대로 작동하는 것처럼 들리므로 더 많은 도움이 될 수는 없지만 일반적인 JavaScript 데이터 처리 문제와 비슷해 보입니다. – Greg

답변

0

웹 응용 프로그램에서 파일을 다운로드하고 사용하려면 백엔드 서버를 설정하고이를 사용하여 사용자 권한이있는 콘텐츠를 임시 저장하는 것이 좋습니다. 이렇게하려면

, HTTP 요청을 한 후 다음과 같은 다음, 드롭 박스 서비스의 서버 측을 호출하여 요청을 처리 코드를 사용하여 Express를 사용

'use strict'; 
var Dropbox = require('dropbox'); 
var fs = require('fs'); 
var path = require('path'); 

exports.downloadFile = function(token, id, eventID, fileType, callback) { 
    var dbx = new Dropbox({ accessToken: token }); // creates post-auth dbx instance 
    dbx.filesDownload({ path: id }) 
    .then(function(response) { 
     if(response.fileBinary !== undefined) { 
     var filepath = path.join(__dirname, '../../images/Events/' + eventID + '/' + fileType + '/Inactive/', response.name); 
     fs.writeFile(filepath, response.fileBinary, 'binary', function (err) { 
      if(err) { throw err; } 
      console.log("Dropbox File '" + response.name + "' saved"); 
      callback('File successfully downloaded'); 
     }); 
     } 
    }) 
    .catch(function(err) { 
     console.log(err); 
     callback('Error downloading file using the Dropbox API'); 
    }) 
} 

module.exports = exports;