new multipartformdatacontent httprequestmessage form data c# post httpclient filestream multipartform-data

c# - httprequestmessage - multipartformdatacontent form new multipartformdatacontent();



Http MultipartFormDataContent (3)

Depuré esto, el problema está aquí:

method.Add(streamContent, "filename");

Este ''Agregar'' en realidad no coloca el archivo en el CUERPO del Contenido Multiparte.

Me han pedido que haga lo siguiente en C #:

/** * 1. Create a MultipartPostMethod * 2. Construct the web URL to connect to the SDP Server * 3. Add the filename to be attached as a parameter to the MultipartPostMethod with parameter name "filename" * 4. Execute the MultipartPostMethod * 5. Receive and process the response as required * /

He escrito un código que no tiene errores, sin embargo, el archivo no está adjunto.

¿Puede alguien echar un vistazo a mi código C # para ver si he escrito el código incorrectamente?

Aquí está mi código:

var client = new HttpClient(); const string weblinkUrl = "http://testserver.com/attach?"; var method = new MultipartFormDataContent(); const string fileName = "C:/file.txt"; var streamContent = new StreamContent(File.Open(fileName, FileMode.Open)); method.Add(streamContent, "filename"); var result = client.PostAsync(weblinkUrl, method); MessageBox.Show(result.Result.ToString());



Sé que esta es una publicación anterior. Pero para aquellos que buscan una solución, para proporcionar una respuesta más directa, esto es lo que he encontrado:

using System.Diagnostics; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Web; using System.Web.Http; public class UploadController : ApiController { public async Task<HttpResponseMessage> PostFormData() { // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try { // Read the form data. await Request.Content.ReadAsMultipartAsync(provider); // This illustrates how to get the file names. foreach (MultipartFileData file in provider.FileData) { Trace.WriteLine(file.Headers.ContentDisposition.FileName); Trace.WriteLine("Server file path: " + file.LocalFileName); } return Request.CreateResponse(HttpStatusCode.OK); } catch (System.Exception e) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); } } }

Aquí es donde lo encontré http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2
Para una implementación más elaborada
http://galratner.com/blogs/net/archive/2013/03/22/using-html-5-and-the-web-api-for-ajax-file-uploads-with-image-preview-and- a-progress-bar.aspx