c# - Web Api项目获取上传文件的字节数组

标签 c# android asp.net-web-api encoding arrays

我正在开发一个 Android 应用程序,它与 WebApi .NET 项目进行通信,以便从数据库插入和获取日期(常见情况)。 我尝试过使用 Multipart MIME。所以我使用了以下代码:

public async Task<HttpResponseMessage> ManageProfilePicture()
    {
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }
        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        var task = await Request.Content.ReadAsMultipartAsync(provider).
            ContinueWith<HttpResponseMessage>(t =>
            {
                if (t.IsFaulted || t.IsCanceled)
                {
                    Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                }

                String fileName = provider.FileData[0].Headers.ContentDisposition.FileName;
                return Request.CreateResponse(HttpStatusCode.OK);
            });

        return task;
    }

我能够获取有关上传文件的文件名和其他信息。如何获取与上传文件关联的字节数组以便将其保存在 MS SQL Server 中?也许在可访问的文件夹中重新创建图片比将其存储在数据库中更好......

有人可以帮我吗?

最佳答案

根据您的需求,您可以引用以下示例代码:

            // process incoming request            
            if (!Request.Content.IsMimeMultipartContent())
            {                
                // return error response               
            }

            // read the file and form data.
            ...
            await Request.Content.ReadAsMultipartAsync(provider);                           
            ...

            // check if files are on the request.
            if (provider.FileStreams.Count == 0)
            {                
                // return return error response               
            }

            IList<string> uploadedFiles = new List<string>();

            foreach (KeyValuePair<string, Stream> file in provider.FileStreams)
            {
                // get file name and file stream
                byte[] photo;
                string fileName = file.Key;
                using (Stream stream = file.Value)
                {
                    using (BinaryReader reader = new BinaryReader(stream))
                    {
                        photo = reader.ReadBytes((int)stream.Length);
                    }
                }

                // INSERT INTO DATABASE HERE (USING SqlConnection, SqlCommand...)                
                // ...

                // keep track of the filename and filelength for the response
                uploadedFiles.Add(fileName);
                uploadedFiles.Add(photo.Length.ToString("N0") + " bytes");
            }

            // return successful response;

希望对你有帮助!

P/S:您可以阅读更多here .

关于c# - Web Api项目获取上传文件的字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485177/

相关文章:

android - "FBReader"如何在epub中对html文件进行分页

c# - 如何使用 Route 属性将查询字符串与 Web API 绑定(bind)?

asp.net-mvc - WebAPI 的条件 FilterProvider

c# - WebApi2 RoutePrefix 和端点 Route = 未找到

Android 特拉维斯 CI 错误 : failed to find target with hash string 'android-23' in:/usr/local/android-sdk

android - 如何从 SD 卡读取 json 文件

c# - 如何返回任务的结果?

C# 多行文本框错误

c# - 什么是 C# 迭代器和生成器,我该如何使用它们

c# - 读取事件日志