получить доступ к входному значению в webAPI из поста - PullRequest
0 голосов
/ 12 июня 2018

Я использую следующий код для загрузки файлов с помощью webAPI, часть загрузки файлов работает нормально, но как мне получить доступ ко всем дополнительным входным значениям и скрытым входным значениям из сообщения?

        [HttpPost]
    public async Task<object> UploadFile()
    {
        if (!Request.Content.IsMimeMultipartContent("form-data"))
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
        }

        var streamProvider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/App_Data/Temp/"));

        try
        {
            await Request.Content.ReadAsMultipartAsync(streamProvider);


            foreach (MultipartFileData fileData in streamProvider.FileData)
            {
                var fileName = "";
                if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName))
                {
                    fileName = Guid.NewGuid().ToString();
                }
                fileName = fileData.Headers.ContentDisposition.FileName;
                if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
                {
                    fileName = fileName.Trim('"');
                }
                if (fileName.Contains(@"/") || fileName.Contains(@"\"))
                {
                    fileName = Path.GetFileName(fileName);
                }
                File.Move(fileData.LocalFileName, Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), Path.GetDirectoryName(fileName) + Guid.NewGuid() + Path.GetExtension(fileName)));

            }
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        catch (Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }

А вотФорма, которую я использую для публикации файла.

<form name="form1" method="post" enctype="multipart/form-data" action="api/upload">
<div>
    <label for="caption">Image Caption</label>
    <input name="caption" type="text" />
</div>
<div>
    <input type="hidden" value="secretvalue"/>
    <label for="image1">Image File</label>
    <input name="image1" type="file" />
</div>
<div>
    <input type="submit" value="Submit" />
</div>

...