2015-10-06 90 views
0

我能夠通過上傳按鈕,以我的供應商API成功上傳的文件。我的供應商API還會以blob格式返回一個.png文件,我需要將其上傳到Azure Blob存儲。我已經嘗試了一些辦法,但我得到以下錯誤在我的節點控制檯:上傳AJAX響應(圖像BLOB)天青Blob存儲:錯誤414

[錯誤]的StatusCode:414

我的前端代碼是在將數據傳遞迴一個角度控制器我的Node後端包含我的Azure Blob Storage調用。我有安裝和需要的強大和請求模塊,但我沒有在我當前的後端代碼中使用它們,因爲我收到的數據已經是blob格式。

這裏是我的前端代碼上傳。成功的「結果」是,我現在回到BLOB數據:

$scope.sendToProduction = function() { 
    var parts = document.getElementById("file").value.split("\\"); 
    var uploadedfilename = parts[parts.length - 1]; 
    var basefilename = uploadedfilename.split(".")[0]; 
    var fileextension = uploadedfilename.split(".")[1]; 
    var filename = basefilename + '.' + fileextension; 
    var file = document.getElementById("file").files[0]; 

    var formdata = new FormData(); 
    formdata.append(filename, file); 

    $.ajax({ 
     url: 'http://myvendorsapi/fileuploadendpoint', 
     type: "POST", 
     data: formdata, 
     mimeType: "multipart/form-data", 
     processData: false, 
     contentType: false, 
     crossDomain: true, 

     success: function (result) { 
      var filename = 'Test.png'; 
      var file = result; 
      console.log(file); 
      $http.post('/postAdvanced', {filename: filename, file: file }).success(function (data) { 
       console.log(data); 
      }, function (err) { 
       console.log(err); 
      }); 
     }, 

     error: function (error) { 
      console.log("Something went wrong!"); 
     } 
    }); 
}; 

這是我上傳到Azure的Blob存儲節點後端:

app.post('/postAdvanced', function (req, res, next) { 
    var filename = req.body.filename; 
    var file = req.body.file; 

    blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) { 
     if (!error) { 
      console.log("Uploaded" + result); 
     } 
     else { 
      console.log(error); 
     } 
    }); 
}) 

如何上傳的Ajax響應到Azure的Blob存儲?

回答

1

的問題是,在這行代碼:

blobSvc.createBlockBlobFromText('blob5', file, filename, function (error, result, response) { 

你有錯誤的參數順序。它應該是:

blobSvc.createBlockBlobFromText('blob5', filename, file, function (error, result, response) { 
+0

這樣做。 MSFT團隊再次拯救!不能相信我錯過了這一點。 – Kode

1

HTTP狀態代碼414的意思是 「請求URI太長」。您是否將正確的blob名稱傳遞給blobSvc.createBlockBlobFromText?

+0

我不確定。我在上面的代碼中命名該文件並將其傳入。blob容器是正確的。我是否錯過了其他明顯的東西? – Kode