Angular+Laravel删除文件



我正在使用Laravel 5.2(用于后端)和AngularJS作为字体端构建一个REST完整的web应用程序。我通过使用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请求提供的文件

我已经尝试过一些东西:

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

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

谢谢你的帮助!

您可以尝试

$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']);
 }

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

最新更新