Angular + Laravel删除文件

时间:2016-05-14 21:25:11

标签: angularjs laravel http

我正在使用Laravel 5.2(用于后端)和AngularJS用于font-end构建一个REST-full网络应用程序。我通过使用API​​连接到Laravel后端。现在我偶然发现了以下问题:我可以正确上传图片,但是再次删除它不起作用。

将文件上传到Larvel public / images / uploaded /文件夹。 这是我的Angular Service(单击“删除”按钮时触发的http请求),其中变量imageToDelete是图像的相对路径。。非常好,请求正在激活,并且填充了imageToDelete变量。

        function deleteProfileImage(imageToDelete) {
            return $http({
                method: 'DELETE',
                url: '/api/pictures/' + imageToDelete
            })
                .then(deleteProfileImageSuccess)
                .catch(deleteProfileImageError);

            function deleteProfileImageSuccess(response) {
                $log.info('Deleting profile picture Success.');
                console.log(response);
                return response;
            }

            function deleteProfileImageError(error) {
                $log.info('Deleting profile picture failed because: ' + error.data);
                return error;
            }
        }

此角度HTTP请求向我的Laravel控制器中的以下函数发出DELETE请求。

public function destroy($imageToDelete)
{
    if(Storage::delete($imageToDelete)) {
        return response()->json(['success' => 'success', 'message' => 'File Deleted']);
    } else {
        return response()->json(['error' => 'Deleting Image failed.'])
            ->setStatusCode(Response::HTTP_BAD_REQUEST);
    }
}

在这里,Storage :: delete($ imageToDelete)什么都不做。它不会删除随Angular DELETE请求提供的文件。

我已尝试过的一些事情:

使用File :: delete()而不是Storage :: delete() 使用unlink()代替Laravel Facades; 使用HTTP DELETE请求将imageToDelete作为数据发送(因此不在URL中)。 但都没有成功。

如何让Laravel(PHP)删除图像?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

你可以尝试

$storage = Storage::find($imageToDelete);

if($storage->delete()) {
    return response()->json(['success' => 'success', 'message' => 'File   Deleted']);
}

 if(Storage::destroy($imageToDelete)) {
        return response()->json(['success' => 'success', 'message' => 'File Deleted']);
    }

 $deleteImage = Storage::where('id', $imageToDelete)->delete();
 if($deleteImage){
   return response()->json(['success' => 'success', 'message' => 'File Deleted']);
 }

答案 1 :(得分:0)

您可能需要检查图像路径。当您使用laravel存储或文件facde时,您的文件路径应该是绝对路径,例如public_path($imageToDelete)