尝试通过javascript将multipart / form-data发布到web api

时间:2017-08-10 06:35:48

标签: javascript asp.net-web-api minio

这里我有一个表单,我有一个输入类型文件来上传我的文件上传按钮点击我需要将multipart / form-data发布到web api  我把文件上传到Minio Server。我已经粘贴了我在下面使用的javascript和web api。

当我得到500(内部服务器错误)后按下上传按钮。请给我一些建议。

HTML that contains the input type file and upload button

$("#upload").click(function () {
            var file = new FormData($('#uploadform')[0]);
            file.append('tax_file', $('input[type=file]')[0].files[0]);
            $.ajax({
                type: "POST",
                url: 'http://localhost:53094/api/values',
                data: file,
                //use contentType, processData for sure.
                contentType: "multipart/form-data",
                processData: false,
                beforeSend: function () {},
                success: function (msg) {
                    $(".modal .ajax_data").html("<pre>" + msg +
                        "</pre>");
                    $('#close').hide();
                },
                error: function () {
                    $(".modal .ajax_data").html(
                        "<pre>Sorry! Couldn't process your request.</pre>"
                    );  
                    $('#done').hide();
                }
            });
        });

[HttpPost]
    public string Post(IFormFile file)
    {
        try
            {
                var stream = file.OpenReadStream();
                var name = file.FileName;
                minio.PutObjectAsync("student-maarklist", "sample.jpeg", stream, file.Length);
                return "Success";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
    }

2 个答案:

答案 0 :(得分:0)

我认为你不需要提到localhost只是文件的路径会做。或者用localhost的IP替换它。

答案 1 :(得分:0)

抱歉,我没有错误,我在javascript中添加的名称不是我在web api中提供的名称。

我改变了,

file.append('tax_file', $('input[type=file]')[0].files[0]);

file.append('file', $('input[type=file]')[0].files[0]);

它有效。