2017-01-06 53 views
1

ng-file-uploadを使用してファイルをアップロードしようとしています。私はこれをほとんどの部分で動作させていますが、呼び出されているAPIにバグがあります。つまり、.xlsxファイルが正しくアップロードされないということです。他のファイルタイプも動作します。私は、ペイロードのContent-Typeを 'application/x-zip-compressed'に強制すると、ファイルをアップロードできるようになることを忠告されています。残念ながら、私はこれを変更する方法を理解することはできません。ペイロードは、次のようになります。ngファイルアップロードのコンテンツタイプを変更してください。

------WebKitFormBoundary9rVv6WxE2BM7vFxz 
Content-Disposition: form-data; name="file[0]"; filename="My Excel File.xlsx" 
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 


------WebKitFormBoundary9rVv6WxE2BM7vFxz-- 

が、このように見える必要があります:

------WebKitFormBoundary9rVv6WxE2BM7vFxz 
Content-Disposition: form-data; name="file[0]"; filename="My Excel File.xlsx" 
Content-Type: application/x-zip-compressed 


------WebKitFormBoundary9rVv6WxE2BM7vFxz-- 

誰もがこの変更を行う方法を助けることはできますか?私は、ファイルオブジェクトの型プロパティを変更しようとしましたが、変更を加えていません。アップロードを行い

機能はそれほどのようにdiv要素から呼び出され

$scope.uploadThenRun = function (file) { 
    Upload.upload({ 
     url: 'https://'+ ppService.ppServer+ ':'+ ppService.sslPort + '/jobs/', 
     data: {file: file} 
    }).then(function (resp) { 
     var jobID = resp.data.data.value; 
     $scope.loadParentFormulation(jobID);   
    }, function (resp) { 
    }, function (evt) { 
    }); 

です:

<div class="my-drop-zone"> 
     <div ngf-drop="uploadThenRun($files)" class="drop-box well" 
     ngf-drag-over-class="'dragover'" ngf-multiple="true">Drop your file here</div> 
</div> 

は、ここで送信されていますネットワーク要求です。これは、変更が必要なペイロードのコンテンツタイプです。誰かがあなたのヘッダを使用してコンテンツタイプを定義することができます

+0

これにはマルチパートフォームデータを使用します。 – Krunal

+0

リクエストは既に複数のフォームデータを使用しています。これは、私が変更する必要のあるペイロードのコンテンツタイプです。私はうまくいけば明らかに上記のポストにスクリーングラブを追加しました。 – DCHE

答えて

1

あなたはこのようにアップロードする前に、ファイルの種類を変更することができます。

if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { 
    file = file.slice(0, file.size, "application/x-zip-compressed") 
} 
Upload.upload({..., data: {file: file}, ...}) 

これは、同じコンテンツを持つ新しいタイプのファイルになるだろう。

+0

よろしくお願いいたします。これは問題を解決しました。 – DCHE

0

を助けることができる

Network screen grab

希望。

$scope.uploadThenRun = function (file) { 
    Upload.upload({ 
     url: 'https://'+ ppService.ppServer+ ':'+ ppService.sslPort + '/jobs/', 
     data: {file: file}, 
     headers : {'Content-Type': 'application/x-zip-compressed'} 
    }).then(function (resp) { 
     var jobID = resp.data.data.value; 
     $scope.loadParentFormulation(jobID);   
    }, function (resp) { 
    }, function (evt) { 
    }); 
+0

返信いただきありがとうございます!私はこれを試して、このヘッダーオプションはヘッダーの要求を変更し、変更する必要のあるペイロードのコンテンツタイプです。 – DCHE

関連する問題