웹 API HttpContext에 ASP.NET MVC HttpContext 보내기

Caloyski

파일을 업로드하려고하는데 현재 MVC HttpContext.Current.Request.Files를 웹 API에 전달하고 싶습니다.

HttpFileCollectionBaseAPI에 전달하기 위해 as 매개 변수를 전달 하려고했지만 항상 null입니다. 제어 장치

public object UploadAttachment(string param1, int param2, HttpFileCollectionBase files)
{
   string _url = _restUrl + param1+ "/Folders/" + param2+ "/UploadAttachment";
   HttpResponseMessage _response = SendJsonRequest(_url, HttpMethod.Post, files);
   var ret = DeserializeResponse(_response);
   return ret;
}

API 코드 :

[HttpPost]
[Route("Archives/{param1}/Folders/{param2}/UploadAttachment")]      
public IHttpActionResult UploadAttachment([FromUri]string param1, [FromUri]int param2, [FromBody] HttpFileCollectionBase files)

코드보기

using (Ajax.BeginForm("UploadAttachment", null, new { param1 = Model.Param1 }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "uploadAttachmentSuccess" }, new { id = "uploadAttachment", enctype = "multipart/form-data" }))
                    {
                    <div class="row">
                        <div class="col-xs-10">
                            <div class="input-group">
                                <label class="input-group-btn" title="">
                                    <span class="btn btn-primary">
                                        <input type="file" name="file_upload" id="file_upload" style="display: none;" multiple />
                                        Browse
                                    </span>
                                </label>
                                <input type="text" id="file_upload_name" class="form-control" readonly>
                            </div>
                        </div>
                        <div class="col-xs-2">
                            <button type="submit" class="btn btn-success" data-toggle="tooltip" id="btn-submit-upload" title="" disabled>
                                Upload
                            </button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-12" id="warning-format">
                        </div>
                    </div>
                    }

SendJsonRequest 구현

            protected virtual HttpResponseMessage SendJsonRequest(string url, HttpMethod method, object objectToSerialize = null, bool tryToRefreshToken = true)
    {
        ...
        HttpRequestMessage _request = new HttpRequestMessage(method, _uri);
        if (objectToSerialize != null)
        {
            string _serializedJSONObject = JsonConvert.SerializeObject(objectToSerialize);
            _request.Content = new StringContent(_serializedJSONObject);
            _request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        }...
무 케시 모드 바디야

MVC 컨트롤러에서 Web Api 컨트롤러로 파일을 업로드하기위한 샘플을 만들었는데 완벽하게 작동합니다.

MVC 컨트롤러 :

    [ActionName("FileUpload")]
    [HttpPost]
    public ActionResult FileUpload_Post()
    {
        if (Request.Files.Count > 0)
        {
            var file = Request.Files[0];

            using (HttpClient client = new HttpClient())
            {
                using (var content = new MultipartFormDataContent())
                {
                    byte[] fileBytes = new byte[file.InputStream.Length + 1];                     file.InputStream.Read(fileBytes, 0, fileBytes.Length);
                    var fileContent = new ByteArrayContent(fileBytes);
                    fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = file.FileName };
                    content.Add(fileContent);
                    var result = client.PostAsync(requestUri, content).Result;
                    if (result.StatusCode == System.Net.HttpStatusCode.Created)
                    {
                        ViewBag.Message= "Created";
                    }
                    else
                    {
                        ViewBag.Message= "Failed";
                    }
                }
            }
        }
        return View();
    }

Web Api 컨트롤러 :

    [HttpPost]
    public HttpResponseMessage Upload()
    {
        if(!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }
        if (System.Web.HttpContext.Current.Request.Files.Count > 0)
        {
            var file = System.Web.HttpContext.Current.Request.Files[0];
            ....
            // save the file
            ....
            return new HttpResponseMessage(HttpStatusCode.Created);
        }
        else
        {
            return new HttpResponseMessage(HttpStatusCode.BadRequest);
        }
    }

Web Api에 파일을 저장하는 방법에 대한 자세한 내용은 Web API : 파일 업로드를 참조하십시오 .

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.NET 5에서 웹 API 컨트롤러에 대한 HttpContext 모의

분류에서Dev

Mocking HttpContext for Web API Controllers in ASP.NET 5

분류에서Dev

ASP.NET MVC 필터에서 filterContext.RequestContext.HttpContext와 filterContext.HttpContext의 차이점은 무엇입니까?

분류에서Dev

ASP.NET Core에서 ActionExecutionContext의 HttpContext에서 RawBody 가져 오기

분류에서Dev

Visual Studio [ASP.NET MVC]에서 HttpContext.Current를 인식하지 못함

분류에서Dev

Asp.Net MVC 4에서 HttpContext.User.Identity.Name을 모의하는 방법

분류에서Dev

ASP.net MVC 웹 API + Android

분류에서Dev

why my HttpContext.Application variable cannot be access through different Actions in ASP.NET MVC

분류에서Dev

ASP.NET Web Api의 HttpContext.Current.Items 대안

분류에서Dev

내 HttpContext.Application 변수가 ASP.NET MVC의 다른 작업을 통해 액세스 할 수없는 이유

분류에서Dev

asp.net 웹 API에서 데이터를 사용하기위한 asp.net MVC 디자인 패턴

분류에서Dev

MOQ를 사용하여 웹 API에서 HttpContext 모의

분류에서Dev

Lambda에 배포 된 asp.net 코어 API의 HttpContext에서 요청 본문을 읽을 수 없습니다.

분류에서Dev

Android에서 Asp.net MVC 웹 API에 액세스

분류에서Dev

ASP.NET Web API HttpContext 응답은 IOwinContext 응답 전에 다시 전송됩니다.

분류에서Dev

Asp.Net Mvc 웹 API 라우팅 404

분류에서Dev

IIS에서 ASP.NET MVC 6 웹 API 실행

분류에서Dev

ASP.NET Core 3.0 HttpContext.Current.Server.MapPath

분류에서Dev

ASP MVC 4 + 웹 API

분류에서Dev

ASP.NET MVC4-ListBoxFor, ActionLink에서 selectedValue 보내기

분류에서Dev

컨트롤러 ASP.NET MVC에 Javascript 배열 보내기

분류에서Dev

asp.nep mvc : 현재 httpcontext에서 상수 변수로 값 설정

분류에서Dev

ASP.NET MVC 웹 API 응용 프로그램에서 긴 차단 while 루프

분류에서Dev

ASP .Net MVC 응용 프로그램에서 HTTPContext 세션 상태를 사용하여 양식을 이동해야하는 이유는 무엇입니까?

분류에서Dev

ASP.NET MVC 내부보기

분류에서Dev

asp.net 코어에서 HttpContext.Session을 사용할 수 없습니다.

분류에서Dev

ASP.NET Core 3.1에서 HttpContext.Response와 함께 새 Json serializer 사용

분류에서Dev

내 asp.net mvc-4 웹 응용 프로그램에서 공유 / EditorTemplete 폴더가 작동하지 않는보기 정의

분류에서Dev

asp.net 웹 사이트에서 특별한 날짜에 SMS 보내기

Related 관련 기사

  1. 1

    ASP.NET 5에서 웹 API 컨트롤러에 대한 HttpContext 모의

  2. 2

    Mocking HttpContext for Web API Controllers in ASP.NET 5

  3. 3

    ASP.NET MVC 필터에서 filterContext.RequestContext.HttpContext와 filterContext.HttpContext의 차이점은 무엇입니까?

  4. 4

    ASP.NET Core에서 ActionExecutionContext의 HttpContext에서 RawBody 가져 오기

  5. 5

    Visual Studio [ASP.NET MVC]에서 HttpContext.Current를 인식하지 못함

  6. 6

    Asp.Net MVC 4에서 HttpContext.User.Identity.Name을 모의하는 방법

  7. 7

    ASP.net MVC 웹 API + Android

  8. 8

    why my HttpContext.Application variable cannot be access through different Actions in ASP.NET MVC

  9. 9

    ASP.NET Web Api의 HttpContext.Current.Items 대안

  10. 10

    내 HttpContext.Application 변수가 ASP.NET MVC의 다른 작업을 통해 액세스 할 수없는 이유

  11. 11

    asp.net 웹 API에서 데이터를 사용하기위한 asp.net MVC 디자인 패턴

  12. 12

    MOQ를 사용하여 웹 API에서 HttpContext 모의

  13. 13

    Lambda에 배포 된 asp.net 코어 API의 HttpContext에서 요청 본문을 읽을 수 없습니다.

  14. 14

    Android에서 Asp.net MVC 웹 API에 액세스

  15. 15

    ASP.NET Web API HttpContext 응답은 IOwinContext 응답 전에 다시 전송됩니다.

  16. 16

    Asp.Net Mvc 웹 API 라우팅 404

  17. 17

    IIS에서 ASP.NET MVC 6 웹 API 실행

  18. 18

    ASP.NET Core 3.0 HttpContext.Current.Server.MapPath

  19. 19

    ASP MVC 4 + 웹 API

  20. 20

    ASP.NET MVC4-ListBoxFor, ActionLink에서 selectedValue 보내기

  21. 21

    컨트롤러 ASP.NET MVC에 Javascript 배열 보내기

  22. 22

    asp.nep mvc : 현재 httpcontext에서 상수 변수로 값 설정

  23. 23

    ASP.NET MVC 웹 API 응용 프로그램에서 긴 차단 while 루프

  24. 24

    ASP .Net MVC 응용 프로그램에서 HTTPContext 세션 상태를 사용하여 양식을 이동해야하는 이유는 무엇입니까?

  25. 25

    ASP.NET MVC 내부보기

  26. 26

    asp.net 코어에서 HttpContext.Session을 사용할 수 없습니다.

  27. 27

    ASP.NET Core 3.1에서 HttpContext.Response와 함께 새 Json serializer 사용

  28. 28

    내 asp.net mvc-4 웹 응용 프로그램에서 공유 / EditorTemplete 폴더가 작동하지 않는보기 정의

  29. 29

    asp.net 웹 사이트에서 특별한 날짜에 SMS 보내기

뜨겁다태그

보관