2

アプリケーション "A" は、POST を使用してワード ファイルを [バイト配列として] 外部アプリケーションにアップロードする必要があります。

filecontent は、リクエスト本文に名前付きパラメータとして追加する必要があり、ファイルをアップロードするには POST リクエストを行う必要があります。

サンプルコードがありますが、Java. 同等の C# コードを書きたいと思います。しかし、C# では、MultiPartEntity のような同様のオブジェクトを見つけることができませんでした。

Java コード スニペット:

String restURL = HOSTURL + "/rest/upload/0b002f4780293c18";        
String fileName = "testRestUploadByFolderID" + Calendar.getInstance().getTimeInMillis() + ".txt";        
File testFile = createNewFile("C:/Temp/rest/" + fileName);        
FileBody content = new FileBody(testFile, "application/octet-stream");        
System.out.println(" File Name : " + content.getFilename() + " ... "                +     content.getTransferEncoding());        
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);        
reqEntity.addPart("filename", new StringBody(fileName));        
reqEntity.addPart("uploadfile", content);        
HttpPost httpPost = new HttpPost(restURL);        
httpPost.addHeader("Accept", "application/json");        
httpPost.setEntity(reqEntity);                 

// Post the request        
String response = httpclient.execute(httpPost, new DefaultResponseHandler());

fileContent をアップロードするために C# で名前付きパラメーターを作成する方法を説明するリンクをいくつか投稿してください。

ありがとうございました。

4

1 に答える 1

1

マルチパート コンテンツの投稿を探している場合は、次の方法が役立つ可能性があります。

ノート:

これは.net 4.5非同期の方法ですが、.net 4でもこのソリューションを使用して、いくつかのNugetパッケージをインストールできます。

コード:

using (HttpClient httpClient = new HttpClient())
using (var multiPartContent = new MultipartFormDataContent())
{

     httpClient.BaseAddress = new Uri(BaseAddress);

     var fileContent = new ByteArrayContent(*filebytes*);

     //Create content header
     fileContent.Headers.ContentDisposition = new ontentDispositionHeaderValue("attachment")
                {
                    FileName = *fileName*
                };

       //Add file to the multipart request
       multiPartContent.Add(fileContent);

       //Add any other file?
       ...


      //Post it
      HttpResponseMessage response = await httpClient.PostAsync("hostURL", multiPartContent);

 }

IMO これは .net で行う最もクリーンな方法です。汚いHttpRequestsは忘れてください

于 2013-06-05T14:14:34.603 に答える