Как передать изображение и некоторые данные в качестве параметра в Web API Controller через Jquery Ajax - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь передать topicmedia и файл изображения на пост-контроллер web api через jquery ajax.но не выполнить эту задачу, я пытаюсь это за последние 2 дня.пожалуйста, кто-нибудь скажет это.

Ajax-код здесь

Действие контроллера Web API Здесь я хочу получить данные и изображение

$('#add').click(function () {
var topicmedia = {"topicid":"","createon":""};
            topicmedia.topicid = 1;
            topicmedia.createon = $('#txtCreateOn').val();
            var data = new FormData();
            var file = $("#img").get(0).files;
            data.append("file", file);
            debugger;
            $.ajax({     
                url: 'http://localhost:4728/api/TopicMedias',
                method: 'POST',
                contentType: 'multipart/form-data',
               // processData: false,
                data: JSON.stringify(topicmedia, file),
                dataType: 'json',
                success: function () {
                    $('#successfullModel').modal('show');
                }
      });
  });

это код веб-API, в котором я хочу получить 2 параметра topicmedia, которые содержат данные topicid и createon, а также файл fileiveive image

  public IHttpActionResult PostTopicMedia(TopicMedia topicMedia, HttpPostedFile files)
    {
        return null;
    }

}

После получения изображенияи данные в действии веб-API. Я хочу сохранить изображение в папке, а другие данные и путь к изображению - сохранить в базе данных.

1 Ответ

0 голосов
/ 06 октября 2018
public async Task<HttpResponseMessage> PostImage()
{
    Dictionary<string, object> dict = new Dictionary<string, object>();
    var httpRequest = HttpContext.Current.Request;
    foreach (string file in httpRequest.Files)
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
        var postedFile = httpRequest.Files[file];
        if (postedFile != null && postedFile.ContentLength > 0)
        {
            IList<string> AllowedFileExtensions = new List<string>{".jpg", ".png"};
            var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
            var extension = ext.ToLower();
            if (!AllowedFileExtensions.Contains(extension))
            {
                var message = string.Format("Please Upload image of type .jpg, .png.");
                dict.Add("error", message);
                return Request.CreateResponse(HttpStatusCode.BadRequest, dict);
            }
            else
            {
                var filePath = HttpContext.Current.Server.MapPath("~/yourDirectory/" + postedFile.FileName + extension);
                postedFile.SaveAs(filePath);
            }
        }

        var successMsg = string.Format("Image Updated Successfully.");
        return Request.CreateErrorResponse(HttpStatusCode.Created, successMsg);
    }

    var res = string.Format("Please Upload a image.");
    dict.Add("error", res);
    return Request.CreateResponse(HttpStatusCode.NotFound, dict);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...