【问题标题】:Angular + Laravel Delete FileAngular + Laravel 删除文件
【发布时间】:2016-09-10 22:50:53
【问题描述】:

我正在使用 Laravel 5.2(用于后端)和 AngularJS 用于字体端构建一个完整的 REST 网络应用程序。我使用 API 连接到 Laravel 后端。现在我偶然发现了以下问题:我可以正确上传图像,但再次删除它不起作用。

文件被上传到 Larvel public/images/uploaded/ 文件夹。 这是我的 Angular 服务(单击“删除”按钮时触发的 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) 删除图片?

感谢您的帮助!

【问题讨论】:

  • 不是很清楚你的具体问题是什么。见How to Ask
  • 感谢您的评论。我已经更新了我的问题。希望现在一切都清楚了。
  • 不....不是真的。一个好的问题需要付出一些努力才能首先正确解释问题,并提供您可以提供的任何故障排除详细信息,并解释哪些部分有效,哪些部分无效

标签: angularjs laravel http


【解决方案1】:

你可以试试

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 2018-10-17
      • 2015-12-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2020-09-10
      • 1970-01-01
      相关资源
      最近更新 更多