2017-08-01 17 views
1

私はdropbox APIを使用してnode.jsファイル構造からファイルを読み込み、そのファイルをDropboxフォルダにアップロードしています。Dropbox API - ファイルの読み込みとアップロードnode.js

ファイルがアップロードされますが、アップロードされたファイルのそのサイズは0バイト

var path = require("path"); 
var temp_dir = path.join(process.cwd(), 'pdf/'); 

if (!fs.existsSync(temp_dir)) 
    fs.mkdirSync(temp_dir); 
    fs.readFile(temp_dir + 'report.pdf', function read(err, data) { 
     if (err) { 
      throw err; 
     } 

    fileupload(data); 
    }); 

ファイルアップロードコードです:

function fileupload(name, content) { 
    request.put('https://api-content.dropbox.com/1/files_put/auto/my_reports/report.pdf', { 
       headers: { 
        Authorization: 'TOKEN HERE', 
        'Content-Type': 'application/pdf' 
       }, 
       body: content 
      }, function optionalCallback(err, httpResponse, bodymsg) { 
       if (err) { 
        console.log(err); 
       } 
       else { 
        console.log("File uploaded to dropbox successfully!"); 
        fs.unlink(temp_dir + 'report.pdf', function(err) { 
         if (err) 
          throw err; 
         else { 
          console.log("file deleted from server!"); 
         } 
        }) 
        request.post('https://api.dropboxapi.com/1/shares/auto/MY_reports/report.pdf' + '?short_url=false', { 
         headers: { 
          Authorization: 'TOKEN HERE' 
         } 
        }, function optionalCallback(err, httpResponse, bodymsg) { 
         if (err) { 
          console.log(err); 
         } 
         else { 
          console.log('Shared link 2 ' + JSON.parse(httpResponse.body).url); 

         } 
        }); 

       } 
      }); 
     } 

ドロップボックスでアップロードされたファイル:

enter image description here

答えて

0

fileupload二つのパラメータ取りますnamecontentをしていますが、パラメータを1つだけ渡しています。つまり、contentundefinedであるため、空のファイルをアップロードしています。

あなたが実際にちょうどfileuploadの定義からそのパラメータを削除し、nameを使用していないので:

function fileupload(content) { 
    ... 

あなたはオーバー廃止されましたのDropbox API v1のを、使用している

に注意してください。 1年前、due to be turned off soonです。 API v2に切り替える必要があります。

+0

グレートを!これはうまくいった。有用な情報をありがとう! – Skywalker

0

あなたはすぐに私の小さなDropboxのV2 APIのラッパー(dropbox-v2-api)を使用してファイルをアップロードすることができます

const dropboxUploadStream = dropbox({ 
    resource: 'files/upload', 
    parameters: { 
     path: '/MY_reports/report.pdf' 
    } 
}, (err, result) => { 
    //upload completed 
}); 

fs.createReadStream(temp_dir + 'report.pdf').pipe(dropboxUploadStream); 
+0

こんにちは、私はあなたのライブラリを使用しようとしているが、私はそれを動作させるように見える。私が 'console.log(result)'私は 'undefined'を取得し、ファイルはアップロードされません。手伝ってくれますか? – Skywalker

+0

@Skywalker 1.これまでに認証済みか、 です。2.ストリームは有効です –

+0

こんにちは。それは認証されています。そして、ストリームが有効かどうかをどうやってチェックするのですか? githubページの例のコードを貼り付けてコピーします。 – Skywalker

関連する問題