繁体   English   中英

如何从 JQuery Ajax 向后端 C# 发送文件和字符串?

[英]How can I send a file and a string to my backend C# from JQuery Ajax?

我的 UI 有一个用于上传文件的输入和一个用于文件名的输入。

我想在同一个 ajax 请求中从用户那里获取文件及其名称,并将具有获取名称的文件上传到我的服务器。

问题是如何在同一个请求中从用户那里获取文件(二进制)和文件名?

这是我的尝试,但导致 400 错误。

C#中的函数:

public IActionResult UploadImage(IFormFile upload, string fileWithName)
    {
      //some code here
    }

这是我的ajax:

$("#startUploading").on("click",function() {

            var fileInput = $.trim($("#myfile").val());

            var formData = new FormData();
            formData.append('upload', $('#myfile')[0].files[0]);
            formData.append('pathWithName', $("#fileAddressUploadTo").val());

            $.ajax({
                url: apiUrl+'/api/V1/Servers/UploadImage',
                type: 'POST',
                data: formData,
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem('token'));
                },
                cache: false,
                processData: false,
                contentType: false
            });

           
});

400 错误意味着错误的请求,但根据我的测试,我发现它对我有用。 所以我担心您的代码中的问题可能与$('#myfile')[0].files[0]有关,请参阅下面的代码

<div>
    <input type="file" id="uploadFile" />
    <button id="btn4">upload</button>
</div>

$("#btn4").click(function(){
    var form = new FormData();
    var temp = $('#uploadFile').prop('files');
    form.append("file",temp[0]);
    form.append("name","myFile");
    console.log(form);
    $.ajax({
        url: 'https://localhost:44321/hello/upload',
        type: 'POST',
        data: form,
        cache:false,
        contentType:false,//stop jquery auto convert form type to default x-www-form-urlencoded
        processData:false,
        success: function (d) {
            alert(d)
        }
    });
});


public string upload(IFormFile file, string name) { 
    return "hello";
}

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM