2017-08-04 86 views
1

您好我正在angularjs中開發web應用程序。我正在開發文件上傳模塊。我有下面的文件詳細信息陣列。如何使用angularjs將文件詳細信息發送到後端?

//下面的代碼來獲得文件

$scope.showPicker=function() 
      { 
       var client = filestack.init('AGeDIRvVZTRWgtmFbfGuZz'); 
       client.pick({ 
       }).then(function (result) { 
        arrMakes.push(result.filesUploaded); 
       }); 
      } 

FileDetails(array)

在上述圖像I中所示我的數組的數組。我有三個文件。 下面是我的角碼發送細節到API。

var files = new FormData(); 

angular.forEach(arrMakes, function (value, index) { 
    console.log(value,index); 
    files.append(index, value); 
    files.append('data', angular.toJson(index).replace(/['"]+/g, '')); 
}); 

return $http.post(this.uploadUrl, files, { 
    transformRequest: angular.identity, 
    headers: { 
    'Content-Type': undefined, 
    } 
}) 

問題是我沒有收到服務器端的文件。下面的行給我在服務器中的0個文件。

System.Web.HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; 

我可以知道我是否向服務器發送了正確的數據?有人可以幫我解決這個問題嗎?任何幫助將不勝感激。謝謝。

+0

你的表單數據聲明在哪裏? – Vivz

+0

var files = new FormData();我忘了發佈。 –

+0

請問我可以舉一些例子! –

回答

2

您沒有上傳任何文件到服務器,只有字符串。

您不能將對象附加到FormData。從Blob & File對象APPART
看看會發生什麼:

fd = new FormData 
 
fd.append(2, {foo: 'bar'}) 
 
fd.append('data', 5) 
 
new Response(fd).text().then(console.log) 
 
// you get [object Object]

爲什麼你在字符串化的 「數據」 的指標?它會被鑄造成自動字符串。你還有什麼需要更換的?

如果我你只是簡單的發送arrMakes到服務器並從後端的url下載所有文件,否則客戶端必須下載然後上傳到服務器並浪費帶寬和時間。

身邊,你不需要angulars foreach循環陣列具有內置的

arrMakes.forEach(function (value, index) { 
    ... 
}) 

這種方法你甚至不會使用任何循環,如果你只是通過arrMarks服務器

+0

感謝您的回覆。我離開了辦公室。我會在星期一檢查。 –

+0

謝謝你的工作。仍然我沒有獲取服務器中的文件。我添加了arrMakes.forEach(function(value,index){ files.append(index,value); files.append('data',index); }) –

+0

但是,'arrMakes' dosen't不包含任何文件,只有普通的對象。如上所示,您不能將對象附加到formData。 – Endless

相關問題