2016-04-01 14 views
0

azure blob storageに画像をアップロードするこのコードがあります。AzureブロブストレージcreateBlockBlobFromLocalFile()にエラーがあります:OutOfRangeInput

var blobSvc = azure.createBlobService(config.BLOB_ACCOUNT, config.BLOB_KEY); 

controllers.upload = function (req, res, next){ 

    req.pipe(req.busboy); 
    var fstream; 

    req.busboy.on('file', function (fieldname, file, filename) { 

     fstream = fs.createWriteStream(__dirname + '/upload/' + filename); 
     file.pipe(fstream); 

     fstream.on('close', function() { 
      blobSvc.createBlockBlobFromLocalFile('resources', 
        filename, 
        fstream.path, 
        function(error, result, response) { 
         if (error) { 
          res.send(error); 
          return; 
         } 
         res.send(result); 
        }); 
     }); 
    }); 
} 

パスは、他の文字は、そのコンテナ名があるアカウント名はすべて小文字で、/var/www/html/foo-project/api/controllers/upload/ragnar.jpgませんでした。

画像がそのパスに存在することを確認してください。

enter image description here

しかし、イムは、まだこのエラーを取得。

{code: "OutOfRangeInput", statusCode: 400, requestId: "00d83e3f-0001-002f-2c40-8cf7a5000000"} 

この問題を修正するにはどうすればよいですか?助けてくれてありがとう。

EDIT:

完全response

enter image description here

+0

リクエストURLとアカウント名を入力してください。 –

+0

@ ZhaoxingLu-Microsoft申し訳ありませんが、これらは機密情報だと思います。ごめんなさい。 – CENT1PEDE

+0

申し訳ありませんが、私はそれを認識していたはずです。 –

答えて

0

はGitHubのリポジトリ公式アズールのHTTP要求を介してブロブをアップロードするための明示的なフレームワークを使用した例があり、ソースコード行を参照してください。 97:https://github.com/Azure/azure-storage-node/blob/master/examples/blobuploader/server.js#L97。例えば


更新

、以下のようにHTMLフォーム。ここ

<form action="/upload" enctype="multipart/form-data" method="post"> 
    <input type="text" name="title"><br> 
    <input type="file" name="upload" multiple="multiple"><br> 
    <input type="submit" value="Upload"> 
</form> 

multipartyパッケージ(npm install multiparty)を使用してサンプルコードです。

var multiparty = require('multiparty'); 

app.post('/upload', function (req, res) { 
    var blobService = azure.createBlobService(); 
    var form = new multiparty.Form(); 
    form.on('part', function(part) { 
     if (part.filename) { 

      var size = part.byteCount - part.byteOffset; 
      var name = part.filename; 

      blobService.createBlockBlobFromStream('<container-name>', name, part, size, function(error) { 
       if (error) { 
        res.send({ 'Error': error }); 
       } 
      }); 
     } else { 
      form.handlePart(part); 
     } 
    }); 
    form.parse(req); 
    res.send('OK'); 
}); 
+0

私は 'form.parse()'コールバックに3つのパラメータ 'err'、' fields'と 'files'を持っています。 'fields'は空の' {} 'を返しますので、アップロードは再び同じエラーを返します 'OutOfRangeInput':/ – CENT1PEDE

+0

また、どのような種類のファイルをフォームからアップロードする必要がありますか?私は何かに変換する必要がありますか? – CENT1PEDE

+0

@TheGreenFoxxノードパッケージ 'mu​​ltiparty'で関数' createBlockFromStream'を使用するためのコードサンプルを更新します。パッケージ 'mu​​ltiparty'はフォームデータを解析します。どんな心配も、私に知らせてください。 –

関連する問題