2017-12-31 78 views
0

私はここにGoogleのプラットフォームのAPIを使用して、Node.jsの中firebaseストレージに画像をアップロードしようとしていますが、私のコードです:Googleのクラウドプラットフォームのアップロード画像は

function upload_file(filename, buffer) { 
    let file = bucket.file(filename); 
    console.log(`file created: ${filename}`); 
    file.save(buffer) 
    .then(() => { 
     console.log(`${filename} should be in bucket now`); 
     return file.bucket.upload(filename); 
    }) 
    .then((data) => { 
     console.log(`upload succeed: ${filename}`); 
    }).catch((err) => { 
     console.log(err); 
    }); 
} 

そして、ここで出力されます。

file created: 7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg 
7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg should be in bucket now 
{ Error: ENOENT: no such file or directory, stat '7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg' 
    at Error (native) 
    errno: -2, 
    code: 'ENOENT', 
    syscall: 'stat', 
    path: '7CD5F2FA-CB2F-4014-BB65-3BBC3D8B3254.jpg' } 

バケットを確認したところ、アップロードした画像が見つかりました。しかし、このエラーはファイルが見つからないと述べている。これをどうすれば解決できますか?

答えて

0

コードがわかりにくいです。それは2回アップロードしようとしているようです。

まず、あなたはとして文書化されfile.save()、呼んでいる:

をファイルに任意のデータを書き込みます。

これはFile#createWriteStreamをラップする便利なメソッドです。

それからとして文書化されbucket.upload()、呼んでいる:

がバケットにファイルをアップロードします。これは、 ファイル#createWriteStreamをラップする簡易メソッドです。

私は、File#createWriteStreamを2回呼びます。それは意味をなさない。

また、このコードは意味がありません。

return file.bucket.upload(filename); 

ファイルがbucketと呼ばれるプロパティを持っていませんので。私はこのコードが単にその事実に失敗すると期待します。

クラウドストレージAPIをもう少し調べて、適切なことをしていることを確認してください。

関連する問題