c# - Retrofit + Restful c# 上传文件

标签 c# android .net rest retrofit

我使用 Multiparti 通过 Retrofit 使用 Android 发送文件,但是在我的服务器上,我使用 .Net C# 构建 Restful 服务,然后如何创建 restful 以从 Retrofit/Android 接收文件 multiparti?

示例:

[RoutePrefix("rest/files")]
public class ReceiveImagesController : ApiController
{
    [AcceptVerbs("POST")]
    [Route("SendFiles")]

    public string sendFiles()
    {
        string retorno = "";
        string path = "C:/temp";

       // byte[] Bytes = new byte[files.Inpu]



        return retorno;
    }
}

最佳答案

我的示例代码和我在 webapi 2 中使用文件上传。我认为您的问题将解决以下代码。

sing System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;

namespace WebMvcTest.Controllers
{
   [System.Web.Http.RoutePrefix("api/test")]
    public class FileUploadController : ApiController
    {

        [System.Web.Http.Route("files")]
        [System.Web.Http.HttpPost]
        [ValidateMimeMultipartContentFilter]
        public async Task<FileResult> UploadSingleFile()
        {
            var streamProvider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(streamProvider);

            string descriptionResult = string.Empty;
            var description =
                streamProvider.Contents.AsEnumerable()
                    .FirstOrDefault(T => T.Headers.ContentDisposition.Name == "\"description\"");
            if (description != null)
            {
                descriptionResult = await description.ReadAsStringAsync();
            }

            return new FileResult
            {
                FileNames = streamProvider.Contents.AsEnumerable().Select(T => T.Headers.ContentDisposition.FileName).ToArray(),
                Names = streamProvider.Contents.AsEnumerable().Select(T => T.Headers.ContentDisposition.FileName).ToArray(),
                ContentTypes = streamProvider.Contents.AsEnumerable().Where(T => T.Headers.ContentType != null).Select(T => T.Headers.ContentType.MediaType).ToArray(),
                Description = descriptionResult,
                CreatedTimestamp = DateTime.UtcNow,
                UpdatedTimestamp = DateTime.UtcNow,
            };
        }
    }
}

关于c# - Retrofit + Restful c# 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008438/

相关文章:

c# - 多个更新面板的问题

c# - 使用一个签名签署 PDF,但具有多个签名外观

c# - 限制没有。 Windows 服务中的实例数

android - 我们可以在 Android Studio 中更改 gradle 插件版本吗

android - 未显示 GCM 通知

c# - 执行 IEnumerable 方法

c# - 如何检查泛型类型定义是否继承自另一个泛型类型定义

android - Android 中应用程序无响应和不幸的 <Appname> 已停止之间的区别?

C# 和 SerialPort 类截断数据

c# - 为什么打字机会吐出两个 .ctor 方法?