gpt4 book ai didi

java - 如何编写用于文件上传的 MVC Web Api Post 方法

转载 作者:太空狗 更新时间:2023-10-29 16:40:06 24 4
gpt4 key购买 nike

我正在关注 this 关于从 android 将文件上传到服务器的教程,但我似乎无法在服务器端获得正确的代码。有人可以帮我编写适用于该 android java uploader 的 Web Api post 方法吗?我当前的 Web API Controller 类如下所示:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;

namespace WSISWebService.Controllers
{
public class FilesController : ApiController
{
// GET api/files
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

// GET api/files/5
public string Get(int id)
{
return "value";
}

// POST api/files
public string Post([FromBody]string value)
{
var task = this.Request.Content.ReadAsStreamAsync();
task.Wait();
Stream requestStream = task.Result;

try
{
Stream fileStream = File.Create(HttpContext.Current.Server.MapPath("~/" + value));
requestStream.CopyTo(fileStream);
fileStream.Close();
requestStream.Close();
}
catch (IOException)
{
// throw new HttpResponseException("A generic error occured. Please try again later.", HttpStatusCode.InternalServerError);
}

HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.Created;
return response.ToString();
}

// PUT api/files/5
public void Put(int id, [FromBody]string value)
{
}

// DELETE api/files/5
public void Delete(int id)
{
}
}
}

由于截止日期是星期二,我非常渴望让这个工作正常进行。如果有人可以提供帮助,我们将不胜感激。

最佳答案

您可以将文件作为 multipart/form-data 发布

    // POST api/files
public async Task<HttpResponseMessage> Post()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}

string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);

string value;

try
{
// Read the form data and return an async data.
var result = await Request.Content.ReadAsMultipartAsync(provider);

// This illustrates how to get the form data.
foreach (var key in provider.FormData.AllKeys)
{
foreach (var val in provider.FormData.GetValues(key))
{
// return multiple value from FormData
if (key == "value")
value = val;
}
}

if (result.FileData.Any())
{
// This illustrates how to get the file names for uploaded files.
foreach (var file in result.FileData)
{
FileInfo fileInfo = new FileInfo(file.LocalFileName);
if (fileInfo.Exists)
{
//do somthing with file
}
}
}


HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, value);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = files.Id }));
return response;
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}

关于java - 如何编写用于文件上传的 MVC Web Api Post 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com