尝试将文件从一个 Web 上传到 API 时出错

Posted

技术标签:

【中文标题】尝试将文件从一个 Web 上传到 API 时出错【英文标题】:Error trying to upload files from one web to an API 【发布时间】:2020-04-19 13:10:38 【问题描述】:

我目前在两个不同的网站上工作,第一个是用户可以上传文件的网站,第二个是上传文件的 API(这是因为该网站非常古老且不可触及)。

我正在使用 Laravel (6) 构建 API,我已经使用 Postman 对其进行了测试,并且文件上传正确,但是当我尝试将它与网站集成时,(构建在一个非常旧的不推荐使用的 Cakephp 版本上) 不起作用,它甚至无法到达服务器(我正在检查 Apache 访问日志)。

我尝试过使用 AJaX、JQuery Post,并将 API URL 放在表单的 action 属性上,但是这些方法都不起作用,有人知道实现此目的的正确方法吗?

这是我正在使用的表格:

<form class="frm-upload form-horizontal" enctype="multipart/form-data" id="uploadpictures" method="post" name="uploadpictures" >
    <div class="button small fileUpload white" data-original-title="" title=""> 
        <span> <i class="icon-cloud-upload"></i> Upload</span> 
        <input class="upload field-file" multiple="" name="images[]" placeholder="File" type="file">
    </div>
</form>

这是我尝试的最后一个 javascript 代码:

$('#uploadpictures').submit(function(e)
        e.preventDefault();
        var data = new FormData(this);
        $.ajax(
            type: 'POST',
            url: "https://api.something.com/file/uploadfromothersite",
            data: data,
            cache: false,
            crossDomain: true,
            contentType: false,
            processData: false,
            success: function(data)
                if(data.check)
                    alert("success");
                 else
                    alert("Fail");
                
            
        );
    );

我刚刚收到一个超时错误异常,请我帮忙!

【问题讨论】:

尝试在控制台中记录“this”并检查里面有什么 应该是http而不是https? 【参考方案1】:

让我们在你的 ajax 中添加这个:

$.ajaxSetup(
       headers: 
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                 
            );

【讨论】:

我是从 Cake 发送信息,而不是 laravel,所以这不是 CSFR TOKEN 的问题 对不起。我的坏

以上是关于尝试将文件从一个 Web 上传到 API 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 rest api 从 Web 应用程序将文件上传到 Azure 文件存储

尝试将图像上传到 Firebase 存储时出错

使用 Application Loader 将二进制文件上传到 iTunes 商店时出错

使用 Angular 6 将文件上传到 Web Api C#

将网络核心 API 部署到 AWS Elastic Beanstalk 服务器时出错

尝试将 WCF 应用程序上传到服务器时出错