2013-05-14 3 views
1

Приложение «A» требует, чтобы загружать текстовый файл [в виде байтового массива] во внешнее приложение с использованием POST.Загрузить документ на сервер с использованием HttpPost

Файл filecontent должен быть добавлен как именованный параметр в тело запроса и должен сделать запрос POST для загрузки файла.

У меня есть пример кода, но в java. Я хотел бы написать эквивалентный код C#. Но в C# не удалось найти такой же объект, как MultiPartEntity.

ява фрагмент кода:

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()); 

Не могли бы вы опубликовать некоторые ссылки, которые объясняет, как сделать именованный параметр в C#, чтобы загрузить fileContent

Спасибо.

ответ

1

Если вы в поисках многостраничного контента, возможно, это может помочь:

Примечание:

Это .net 4.5 асинхронный путь сделать это, но вы можете использовать это решение в .net-тоже установкой некоторых 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 это cl eanest способ сделать это на .net, забыть о грязных HttpRequests

Смежные вопросы