通过axios将文件上传到WebApi

紫菜

尝试将文件上传到webapi时出现此错误

无法将类型为“ System.String”的对象转换为类型为“ System.Web.HttpPostedFile”的对象

javascript:

UploadReceivingIssueImages(e) {

    if (!e.target.files || e.target.files.length === 0)
        return;

    let formData = new FormData();


    for (var i = 0; i < e.target.files.length; i++) {
        formData.append('file', e.target.files[i]);

    }

    var vm = this;

    axios.post('../api/receiving/UploadDocReceivingIssueImages?headerId=' + this.SelectedSubIdIdObj.HeaderId,
        formData,
        {
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        }
    ).then(function () {
        vm.getDocReceivingIssueImages();
        console.log('SUCCESS!!');
    }, function (er) {
        alert("Couldn't upload images")
    });
}

WebApi代码

[HttpPost]
public bool UploadDocReceivingIssueImages([FromUri] int headerId)
{
    if (!Request.Content.IsMimeMultipartContent())
    {
        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
    }

    var httpRequest = HttpContext.Current.Request;
    if (httpRequest.Files.Count < 1)
    {
        var resp = new HttpResponseMessage(HttpStatusCode.NotFound)
        {
            Content = new StringContent("No File Uploaded"),
            ReasonPhrase = "No File Uploaded"
        };
        throw new HttpResponseException(resp);
    }

    var dirPath = @"\\dirPath";


    foreach (var f in httpRequest.Files)
    {
        var pf = (System.Web.HttpPostedFile)f;

        pf.SaveAs(dirPath + Guid.NewGuid().ToString() + pf.FileName);
    }

    return true;
}

错误发生在

var pf = (System.Web.HttpPostedFile)f;

f对象是一个值为'file'的字符串...为什么?!?!任何帮助,将不胜感激。

用户名

因为当您枚举HttpRequest.PostedFiles时,您枚举的是其键(名称,它们都是基于JS的“文件”),而不是文件:

        foreach (var key in httpRequest.Files)
        {
            var pf = httpRequest.Files[key]; // implicit cast to HttpPostedFile

            pf.SaveAs(dirPath + Guid.NewGuid().ToString() + pf.FileName);
        }


编辑添加:

随着中说,你需要更新你的JS使用的唯一的名称FormData,否则你就只能读取一个文件出你HttpContextHttpFileCollection

    for (var i = 0; i < e.target.files.length; i++) {
        formData.append('file' + i, e.target.files[i]);

    }

请参阅MSDN上的HttpFileCollection

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过HttpClient将文件(IfromFile)上传到webApi

来自分类Dev

将JSON文件上传到WebAPI

来自分类Dev

通过VBA将文件上传到Dropbox

来自分类Dev

无法通过PHP文件上传将文件上传到AWS

来自分类Dev

如何使用axios将文件上传到Dropbox

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

通过发布将文件上传到服务器OutOfMemory

来自分类Dev

通过网站将文件上传到SFTP服务器

来自分类Dev

如何通过ActiveResource / REST API将文件上传到Redmine?

来自分类Dev

通过API将文件上传到Google云端硬盘

来自分类Dev

通过paramiko将大文件上传到proftpd超时

来自分类Dev

通过appengine将文件上传到Google Cloud Storage

来自分类Dev

通过Http将视频文件从Unity上传到Python

来自分类Dev

尝试通过gradle将zip文件上传到本地工件

来自分类Dev

如何通过pymongo将.py文件上传到mongodb中

来自分类Dev

无法通过 web-api 将文件上传到 slack

来自分类Dev

通过 Jenkins 将 iOS .ipa 文件上传到 testflight

来自分类Dev

将文件上传到前端

来自分类Dev

将文件上传到Django

来自分类Dev

通过PHP FTP PUT将文本文件上传到Google上传文件

来自分类Dev

通过上传表单将图像上传到 Django 用户配置文件

来自分类Dev

使用flow.js + ng-flow将文件上传到WebAPI 2

来自分类Dev

通过HTTP将文件上传到ASP.NET,再上传到C#中的FTP服务器

来自分类Dev

如何使用axios将图像(大文件)上传到服务器

来自分类Dev

如何使用Node.js和Axios将文件上传到AWS中的预签名URL?

来自分类Dev

使用axios将Vue中的XML文件上传到ASP .NET Core

来自分类Dev

如何使用axios将图像/文件从Vue js上传到Laravel7

来自分类Dev

如何通过AngularJS通过Node.js Express将文件上传到s3

Related 相关文章

  1. 1

    通过HttpClient将文件(IfromFile)上传到webApi

  2. 2

    将JSON文件上传到WebAPI

  3. 3

    通过VBA将文件上传到Dropbox

  4. 4

    无法通过PHP文件上传将文件上传到AWS

  5. 5

    如何使用axios将文件上传到Dropbox

  6. 6

    通过Web API将文件上传到Azure文件存储

  7. 7

    通过Web API将文件上传到Azure文件存储

  8. 8

    通过发布将文件上传到服务器OutOfMemory

  9. 9

    通过网站将文件上传到SFTP服务器

  10. 10

    如何通过ActiveResource / REST API将文件上传到Redmine?

  11. 11

    通过API将文件上传到Google云端硬盘

  12. 12

    通过paramiko将大文件上传到proftpd超时

  13. 13

    通过appengine将文件上传到Google Cloud Storage

  14. 14

    通过Http将视频文件从Unity上传到Python

  15. 15

    尝试通过gradle将zip文件上传到本地工件

  16. 16

    如何通过pymongo将.py文件上传到mongodb中

  17. 17

    无法通过 web-api 将文件上传到 slack

  18. 18

    通过 Jenkins 将 iOS .ipa 文件上传到 testflight

  19. 19

    将文件上传到前端

  20. 20

    将文件上传到Django

  21. 21

    通过PHP FTP PUT将文本文件上传到Google上传文件

  22. 22

    通过上传表单将图像上传到 Django 用户配置文件

  23. 23

    使用flow.js + ng-flow将文件上传到WebAPI 2

  24. 24

    通过HTTP将文件上传到ASP.NET,再上传到C#中的FTP服务器

  25. 25

    如何使用axios将图像(大文件)上传到服务器

  26. 26

    如何使用Node.js和Axios将文件上传到AWS中的预签名URL?

  27. 27

    使用axios将Vue中的XML文件上传到ASP .NET Core

  28. 28

    如何使用axios将图像/文件从Vue js上传到Laravel7

  29. 29

    如何通过AngularJS通过Node.js Express将文件上传到s3

热门标签

归档