2017-12-27 60 views
0

私はちょっとここに詰め込まれています。私はindexedDbからJSormオブジェクトを同時にサーバーに送信しようとしています。それを受け入れる方法は次のようになります。私は、JSONオブジェクトとしての私のbatchModelsを保存しなければならなかった、とだけPOSTのフォームからまっすぐに掲載された前jsonオブジェクトとファイルを取得してasp.netサーバーに投稿するには

[HttpPost] 
    public async Task<IActionResult> Create(BatchModel model, IFormFile vinFile) 
    { 
    //logic goes here 
    } 

この方法は、以前働いていました。多くは、それ以来変更されている、と彼は、次の(簡体字)メソッドで、オフライン状態から再びオンラインになるようになりましたクライアントは、すぐにそれをアップロードします:

試験するため
if (infoChanged === true) { 
    fetchPromises.push(
     fetch('/Batch/Create/', { 
      headers: new Headers({ 
       'Content-Type': 'application/javascript' //Tried this with multi-part/form 
      }), 
      credentials: 'same-origin', 
      method: 'POST', 
      body: batch //, vinFile 
     }) 
    ); 
} 
return Promise.all(fetchPromises); 

私が持つメソッドを使用しようとしました私が変更しなければならなかったのは、[FromBody]タグを追加してC#コードを変更しなければならなかったということでしたが、今ではvinFileもいっぱいにする必要があります。 FormDataオブジェクトで、バッチとvinFileをCreate関数と同じ名前で追加してみました。しかし、その結果、両方の変数がnullになります。

答えて

0

見なければならない重要な機能はヘッダーです。 {Content-Type: "application/json"}

あなたは次のようなものが必要です:自分でタイプを設定する必要があります。

fetch(myRequest).then(function(response) { 
    var contentType = response.headers.get("content-type"); 
    if(contentType && contentType.includes("application/json")) { 
     return response.json(); 
    } 
    throw new TypeError("Oops, we haven't got JSON!"); 
    }) 
    .then(function(json) { /* process your JSON further */ }) 
    .catch(function(error) { console.log(error); }); 

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

+0

あなたはまた、あなたがNewtonSoft https://www.newtonsoft.com/json –

+0

にダイビングをしたいかもしれません、サーバー側であなたのタイプを変換しようとしている場合のためにちょっと感謝レスポンス、しかし私は '取得'ではなく '投稿'をしようとしています。 jsonと.csvファイルの両方を同時にポストしようとしているので、アプリケーション/ jsonに変更することはできません。私はmultipart/form-dataについてもっと考えていましたが、どちらもうまくいかないようです。 私はnewtonsoftを見てみましょう! – Typhaon

+0

問題はありません –

関連する問題