0

After i click on Personal Image, an Sweetalert appear.

I want to upload image from input Swal() sweetAlert, but I always received null File in ActionResult.

I check it with a formData Send and never got actionresult request.

I working in MVC5 if someone can help me!! Thanks!! Excuse me for my english.

Controller:

    [LogActionFilter]
    [HttpPost]
    [ValidateAntiForgeryToken]
    [MenuPermissions]

    public ActionResult EditImage(HttpPostedFileBase inputImage)
    {
        //if (Request.Files.Count <= 0)
        //    return Json(new Dictionary<string, string>() { { "error", "Problemas en el servidor." } });
        //var avatar = Request.Files[0];
        var avatar = inputImage;
        var userName = User.Identity.GetUserName();

        if (Directory.Exists(Server.MapPath("~/Uploads/UserImg/")) == false)
        {
            Directory.CreateDirectory(Server.MapPath("~/Uploads/UserImg/"));
        }
        var path = Server.MapPath("~/Uploads/UserImg/" + userName + ".jpg");

        avatar?.SaveAs(path);
        return Json(new Dictionary<string, string>() { { "success", "Datos del usuario modificados satisfactoriamente." } });

    }

View: Javascript

$("#AvatarId").click(function (eve) {

            swal({
                title: 'Selecciona tu imagen',
                input: 'file',
                inputAttributes: {
                    'accept': 'image/*',
                    'aria-label': 'Carga tu imagen de perfil',
                    'id': 'inputImage'
                }

            }).then(function (file) {
                /*Ajax*/
                var token = $('[name=__RequestVerificationToken]').val();
                var Datos = {
                    __RequestVerificationToken: token,
                    Imagen: file

                }
                $.ajax({

                    url: "@Url.Action("EditImage", "Account")",
                    type: 'POST',
                    data: Datos,
                    success: function (data) {
                        if (data['success']) {
                            //var result = e.target.result;
                            //$('#AvatarIconId').attr("src", result);
                            swal("Lolazo","Hahaha","success");
                        } else {
                            var message = document.createTextNode(data['error']);
                            var p = $('#genericError')
                            p.empty();
                            p.append(message);
                        }
                    },error: function () {
                        var message = document.createTextNode('¡Ocurrió un error inesperado! Comuniquese con el proveedor del sistema.');
                        var p = $('#genericError')
                        p.empty();
                        p.append(message);
                    }
        });
  • Use `FromData` and set the correct ajax options to upload files using ajax. Refer [this answer](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) –  Nov 07 '17 at 02:51
  • When i using formData i got calls from Actionresult but never entering. always get Solicitude Error. understand? @StephenMuecke – Maximiliano Cesán Nov 07 '17 at 12:04
  • I have no idea what your saying. Read the answer I gave you –  Nov 07 '17 at 20:20

0 Answers0