首页 > 解决方案 > 尝试将文件从一个 Web 上传到 API 时出错

问题描述

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

我正在使用 Laravel (6) 构建 API,我已经用 Postman 对其进行了测试,并且文件正确上传,但是当我尝试将它与网站集成时,(构建在一个非常旧的不推荐使用的 CakePHP 版本上)没有t 工作,它甚至没有到达服务器(我正在检查 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");
                }
            }
        });
    });

我只是收到一个超时错误异常,请我需要一些帮助!

标签: jqueryhtmlajaxlaravelpost

解决方案


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

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

推荐阅读