无法在Heroku上移动上传的文件

时间:2019-05-17 16:03:37

标签: php ajax laravel laravel-5 heroku

我有一个ajax调用,它将文件上传到部署在Heroku的Laravel应用中。在我的本地环境中,这无瑕。

在Heroku上它将上传文件(我尝试在ajax响应中返回$ logoImage,并且那里有一个tmp / whatever123),但是当它应该移动时,什么也没有发生。没有文件放在/ public / img / local_logos文件夹中。还尝试仅使用“ img / local_logos /”作为路径,也可以在本地使用。

这可能是https问题。我在Heroku上使用https。但是,当尝试上传文件时,它应该已经爆炸了。发送具有相似代码的普通格式在生产中也没有问题。

这是ajax调用所调用的函数。

 public function postLocalLogo(Request $request)
 {
    if ($request->hasFile('logoImage')) {
        $logoImage = $request->file('logoImage');
        $path = base_path() . '/public/img/local_logos/';

        $extension = $logoImage->getClientOriginalExtension();
        $fileName = md5($logoImage->getClientOriginalName() . microtime()) . '.' . strtolower($extension);
        $logoImage->move($path, $fileName); // This seems to not happen on Heroku

        $storageLogo = new StorageLogo();
        $storageLogo->filename = $fileName;
        $storageLogo->save();

        echo json_encode($fileName);
    }

}

这是ajax函数:

 function uploadLogo() {
    deleteLogoFromServer();
    var logoFile = $('#logoImage')[0].files[0];

    var data = new FormData();
    data.append('logoImage', logoFile);

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

    jQuery.ajax({
        url: '/postajax',
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        method: 'POST',
        success: function (data) {
                localStorage.setItem('logoFileName', data);
                $("#js-dataLocalLogo").val(localStorage.getItem('logoFileName'));
        },
        error: function (error) {
            alert(error);
        }
    });
}

0 个答案:

没有答案