none
Post Files Api controller C# RRS feed

  • Pregunta

  • Hola,

    estoy tratando de enviar varios archivos al mismo tiempo a un controlador, si uso :

         var oWeb = new WebClient();
                    oWeb.QueryString = reqparm;
                    var responseBytes = oWeb.UploadFile(baseUrl + path, @"E:\Excels\8_29092014_150000.xlsx");
                    string response = Encoding.ASCII.GetString(responseBytes);

    esto funciona pero solo puedo enviar un archivo, busque en Internet  y encontré otras formas con:

    ............. 
    HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); 
    wr.ContentType = "multipart/form-data; boundary=" + boundary;
                wr.Method = "POST";
                wr.KeepAlive = true;
                wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
    ..............
    WebResponse wresp = wr.GetResponse();

    pero esta no me funciona, me arroja el siguiente erro: Error en el servidor remoto: (405) Método no permitido, por favor si me pueden ayudar.

    Gracias.



    RubenDsc

    lunes, 10 de agosto de 2015 20:29

Respuestas

Todas las respuestas

  • hola

    pero estas seguro que es un Api controller ? lo pregunto porque no se usa el UploadFile() sino que deberias usar algo que invoque un verbo HTTP

    podrias usar el HttpClient

    entonces puedes realizar un Post()

    ASP.NET WebApi: how to perform a multipart post with file upload using WebApi HttpClient

    Send a POST request with files

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta RubenDsc lunes, 10 de agosto de 2015 23:11
    lunes, 10 de agosto de 2015 21:14
  • Hola,

    si, es api controller,

    en el api controller lo recibo de la siguiente manera:

    [HttpPost]
            public HttpResponseMessage Send([System.Web.Http.FromUri]SendRequest sendRequest)
            {
    
                HttpResponseMessage result = null;
                string fileName = string.Empty;
                var httpRequest = HttpContext.Current.Request;
                if (httpRequest.Files.Count > 0)
                {
                    var docfiles = new List<string>();
                    foreach (string file in httpRequest.Files)
                    {
                        var postedFile = httpRequest.Files[file];
                        var filePath = HttpContext.Current.Server.MapPath("~/App_Data/" + postedFile.FileName);
                        postedFile.SaveAs(filePath);
                        docfiles.Add(filePath);
                        fileName = ";" + postedFile.FileName;
                    }
                    result = Request.CreateResponse(System.Net.HttpStatusCode.Created, docfiles);
                }
                else
                {
                    result = Request.CreateResponse(System.Net.HttpStatusCode.BadRequest);
                }
    ............

    esto funciona para WebClient().


    RubenDsc

    lunes, 10 de agosto de 2015 22:48
  • hola

    Sending HTML Form Data in ASP.NET Web API: File Upload and Multipart MIME

    no entiendo muy bien que papel juega ese SendRequest que defines como parametro

    si en definitiva los archivos los tomas del HttpContext.Current.Request

    ---

    evaluaste lo que comente del uso del HttpClient para enviar los archivos ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 10 de agosto de 2015 22:59
  • El SendRequest  es un objeto, ya que envió un NameValueCollection con parámetros los cuales llegan a este objeto, 

    Si ya estoy revisando el HttpClient, gracias por mencionarlo.

    Sls.


    RubenDsc

    lunes, 10 de agosto de 2015 23:11