c# - 在 web Api 和 angularJS 中上传文件和表单数据

标签 c# asp.net angularjs asp.net-web-api2

我正在遵循此 blog 中的指南关于如何发布表单数据和 一份文件。我正在尝试将文件上传到服务器上的目录中 已完成以下操作,但无法正常工作。

这是发布功能

[HttpPost]
        public async Task<HttpResponseMessage> UploadFile(HttpRequestMessage request)
        {
            String root = HttpContext.Current.Server.MapPath("~/Logo/");

            if (!request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var data = await Request.Content.ParseMultipartAsync();
            var httpRequest = HttpContext.Current.Request;

            if (data.Files.ContainsKey("file"))
            {

                var file = data.Files["file"].File;      // this is getting the file
                var fileName = data.Files["file"].Filename; // this is getting the fileName
               // System.Web.HttpPostedFile filePost = data.Files["file"];
                String a = root + "" + Path.GetFileName(fileName);
                string b = a;
                var postedFile = fileName;                                                  // this is not working
                var filePath = HttpContext.Current.Server.MapPath("~/Logo/" + fileName);    // can someone help please 
                postedFile.SaveAs(filePath);                                                // I

            }

            if (data.Fields.ContainsKey("description"))
            {
                var description = data.Fields["description"].Value;
            }

            return new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("Thank you for uploading the file...")
            };
        }

如何将文件保存到服务器上的目录中?

最佳答案

目前我正在使用以下代码上传图像文件,但它也适用于任何类型的文件:

public string UploadImage()
    {
        HttpRequestMessage request = this.Request;
        if (!request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(new HttpResponseMessage((HttpStatusCode.UnsupportedMediaType)));
        }
        var context = HttpContext.Current.Request;
        if (context.Files.Count > 0)
        {
            var resourcePhoto = new PhotoHelper(HttpContext.Current.Server.MapPath("~"));
            var file = context.Files.AllKeys.FirstOrDefault();
            var result = resourcePhoto.SaveResourceImage(context.Files[file], User.Identity.Name);
            return result;
        }
        else
        {
            return null;
        }
    }

SaveResourceImage 中,我执行以下操作:

 postedFile.SaveAs(resultPath);

就是这样。

关于c# - 在 web Api 和 angularJS 中上传文件和表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37414415/

相关文章:

javascript - 事件加载两次

c# - 在 Entity Framework 中使用 Postgis 的几何类型

javascript - 如何重新运行/重新加载 Controller 的一部分?

javascript - Angular 的 RouteProvider 和传递范围

c# - 多条件验证有没有更优雅的方法

c# - 读取可观察的 TAP 模式

c# - NHibernate 从类生成映射?

c# - 带有用于服务器端渲染的 Javascript View 引擎的 Asp.Net MVC - 服务器上的构建错误

javascript - 无法到达已删除的数组对象

c# - 如何在 TreeView 中找到根节点