【问题标题】:Delete file on ajax post request in laravel在laravel中删除ajax发布请求上的文件
【发布时间】:2014-07-29 07:04:42
【问题描述】:

试图通过发布编辑表单上的 ajax 发布请求删除上传的图像。但是我遇到了一些问题,当我按下删除按钮时 - 它成功发送带有图像路径的 ajax 发布请求,然后在我的控制器中我试图删除该文件,但它没有删除它。

这是我的 js:

(function($) {
    $('.del-image').click(function() {
        var thisUrl = $('.col-md-10 img').attr('src');

        $.ajax({
            method: 'post',
            url: '/del-image',
            data: {imgUrl: thisUrl, id: pageId},
            error: function(e) {
                alert('Error' + e);
            }
        });
    });
})(jQuery);

然后在控制器中我收到 ajax 发布请求:

public function deleteImage() {
    if (Request::ajax()) {
        $path = Input::get('imgUrl');
        File::delete($path);
        return 'ajax request';
    }

    return App::abort(404);
}

在 routes.php 我有:

Route::any('del-image', array('uses' => 'PageController@deleteImage'));

任何帮助将不胜感激!

【问题讨论】:

  • 您确定AJAX 请求正在发送到您的控制器,而您得到的是什么,是否有任何错误消息?您的文件保存在哪里(在公共文件夹中)?
  • 没有错误消息,在控制台中,当我单击删除按钮时,我会看到消息“ajax 请求”。
  • 试试try{ File::delete($path); return 'ajax request'; } catch(Exception $e) { dd($e); }
  • 还要确保path 是正确的并且拥有write 权限。
  • 我在你的AJAX调用中没有看到success方法,你怎么在console看到'ajax request'

标签: jquery ajax laravel laravel-4


【解决方案1】:

试试这个(获取文件path for uploads/filename.ext):

var  = $('.col-md-10 img').attr('src');
var thisUrlArray = thisUrl.split('/');
thisUrl = 'uploads/' + thisUrlArray.pop();

然后在AJAX 调用的data 参数中使用thisUrl 作为您的imgUrl

【讨论】:

  • 谢谢,伙计!我用过:var thisImg = thisUrl.replace('domain.com', '');
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 2015-04-03
  • 2013-10-04
  • 1970-01-01
  • 2017-03-04
相关资源
最近更新 更多