2012-02-15 6 views
12

RESTクライアント用のファイルをアップロードするにはどうすればよいですか?複数のフォーラムの投稿から、WCFのWeb APIドキュメントからHttpRequestMessageまたはStreamを使用したRESTファイルのアップロード?

[WebInvoke(UriTemplate = "thumbnail", Method = "POST")] 
public HttpResponseMessage UploadFile(HttpRequestMessage request) 
{ 


WCF REST File upload with additional parameters

[WebGet(UriTemplate="", Method ="POST"] 
public string UploadFile(Stream fileContents) 

私は理解して、第1の方法は、直接、通常のHTMLフォームからファイルを投稿することができていること。 2番目のアプローチは、私が見つけたすべてのフォーラム投稿に共通するようです。

何をお勧めしますか? REST APIには、あらゆる種類の言語やプラットフォームからアクセス可能でなければなりません。

HttpRequestMessageアプローチの場合、WCF HttpClientでファイルをアップロードするにはどうすればよいですか? FormUrlEncodedMediaTypeFormatterを使用)

答えて

2

最初の方法は「金属に近い」もので、httpリクエストを処理して自分で回答を作成するので、柔軟性が高くなります。 2番目のオプションは、実装の観点からはるかに簡単です(最初のメソッドが行っているのと同じ作業を行います)

私は持っていませんあなたの最後の質問に対する答え。

12

私はMVCを使用して次のことを行っているHttpRequestMessageアプローチをテストするために:

public class TestingController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Upload() 
    { 
     var file = Request.Files[0]; 
     var filename = Request.Form["filename"]; 
     var uri = string.Format("http://yoururl/serviceRoute/{0}", filename); 
     var client = new HttpClient(); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("image/pjpeg")); 
     var content = new StreamContent(file.InputStream); 
     var response = client.PostAsync(uri, content); 
     ViewBag.ServerUri = uri; 
     ViewBag.StatusCode = response.Result.StatusCode.ToString(); 
     return View(); 
    } 

} 

Indexビューは、ポストバックのアップロード方法のことをそれでフォームを持っている必要があります。次に、HttpClientを使用してRESTサービスに接続することができます。

+0

ありがとうございました。残念ながら私は正しい答えを1つだけ選択でき、私は既にJCaffeineにそれを渡しました。しかし、アップ票をした。 – Remy

+0

レミー、歓迎ですが、心配はありません。それがあなたを助けてうれしかった。 – Jed

関連する問題