WebAPI图片上传

Posted 落叶的瞬间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebAPI图片上传相关的知识,希望对你有一定的参考价值。

public Task<HttpResponseMessage> PostFormData()
        {
            // Check if the request contains multipart/form-data.
            // 检查该请求是否含有multipart/form-data
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

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

            // Read the form data and return an async task.
            // 读取表单数据,并返回一个async任务
            var task = Request.Content.ReadAsMultipartAsync(provider).
                ContinueWith<HttpResponseMessage>(t =>
                {
                    if (t.IsFaulted || t.IsCanceled)
                    {
                        Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                    }

                    // This illustrates how to get the file names.
                    // 以下描述了如何获取文件名
                    foreach (MultipartFileData file in provider.FileData)
                    {
                        //新文件夹路径
                        string newRoot = root + "\\" + provider.FormData.GetValues(1)[0].ToString();
                        if (!Directory.Exists(newRoot))
                        {
                            Directory.CreateDirectory(newRoot);
                        }
                        Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                        Trace.WriteLine("Server file path: " + file.LocalFileName);
                        if (File.Exists(file.LocalFileName)) 
                        {
                            //原文件名称
                            string fileName = file.Headers.ContentDisposition.FileName.Substring(1, file.Headers.ContentDisposition.FileName.Length - 2);
                            //新文件名称   随机数
                            string newFileName = provider.FormData.GetValues(0)[0] + "." + fileName.Split(new char[] { . })[1];
                            File.Move(file.LocalFileName, newRoot + "\\" + newFileName);
                        }
                    }
                    return Request.CreateResponse(HttpStatusCode.OK);
                });

            return task;
        }

 

以上是关于WebAPI图片上传的主要内容,如果未能解决你的问题,请参考以下文章

kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器

Ionic app 上传图片之webApi接口

WebAPI图片上传

WebApi 文件上传,断点上传,分块上传,断点下载,查询 (图片的直接预览,视频边加载边播放)

WebClient和HttpClient, 以及webapi上传图片

CKEditor 和 C# Web API,使用简单的上传插件上传图片