2

使用ng-file-upload將基本單個文件上傳到我的服務器。發送到服務器時文件對象爲空ng-file-upload

我可以選擇文件,查看我選擇的文件名,並將文件對象($scope.myFiles[0])傳遞給我的角度服務。但是,當使用文件填充我的HTTP數據屬性時,在開發工具中檢查HTTP請求時,文件是空對象。

控制器:

UploadService.upload({ data: { file: $scope.myFiles[0], 'category': $scope.selectedCategory}}) 
    .success(function (data) { 
    //// 
    //// 

UploadService:

app.factory('UploadService', function ($http, $q) { 
    return { 
     upload: function (something) { 
      console.log(something); 

      return $http({ 
       method: 'POST', 
       url: '/upload', 
       data: something 
      }); 
     } 
    } 
}); 

利用上述,檢驗在開發工具的HTTP請求,我看到:

Request Payload: 
    {data: {file: {}, category: "Friend Card"}} 
    data: 
     {file: {}, category: "Friend Card"} 
     category:"Friend Card" 
     file:{} 

綜觀控制檯的輸出。日誌(東西),我可以看到文件通過:

{ 
    $hashKey:"object:107" 
    lastModified:1465716430000 
    lastModifiedDate:Sun Jun 12 2016 08:27:10 GMT+0100 (BST) 
    name:"Postcard.JPG" 
    size:522622 
    type:"image/jpeg" 
    webkitRelativePath:"" 
} 

是否更改功能具有通過報頭類型:

return $http({ 
      method: 'POST', 
      url: '/upload', 
      headers: { 
       'Content-Type': something.data.file.type 
      }, 
      data: { 
       "file": something.data.file, 
       "category": something.data.category 
      } 
     }); 

我可以在開發工具看到:

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:48 
Content-Type:image/jpeg 
Cookie:_ga=GA1.1.2023678669.1463291637; _gat=1 
Host:localhost:8585 
Origin:http://localhost:8585 
Referer:http://localhost:8585/pages/ 

具體地說:內容類型:image/JPEG所以它看起來是正確的,但文件仍然是空的對象。

+1

使用'Upload.upload(網址:{url:...,文件:文件})'上傳文件到服務器而不是$ http – danial

+0

@danial - 謝謝,但我不明白..而不是http?你有一個例子嗎? –

+1

這裏有很多關於文檔的例子:Upload.upload({method:'POST', url:'/ upload', data:something }); – danial

回答

0

回答上述丹尼爾來到部分...

的NG-文件上傳lib中自帶的一些API和可以在被注入到你的角度應用方法,其中之一是「上傳」服務。

我在我的控制器注入這個,跟着的jsfiddle這裏:http://jsfiddle.net/danialfarid/maqbzv15/1118/

Upload.upload({ 
    url: 'https://angular-file-upload-cors-srv.appspot.com/upload', 
    data: {username: $scope.username, file: file}, 
});