2016-05-14 11 views
0

私は、Laravel 5.2(バックエンド用)とAngularJS(フォントエンド用)を使用してREST完全Webアプリケーションを構築しています。私は、APIを使用してLaravelバックエンドに接続します。今私は次の問題に遭遇しました。イメージを正しくアップロードできますが、イメージをもう一度削除することはできません。Angular + Laravelファイルを削除

ファイルは、Larvel public/images/uploaded /フォルダにアップロードされます。 これは私の角度サービスです(「削除」ボタンをクリックすると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); 
    } 
} 

そしてここで、ストレージ::($ imageToDelete)を削除は何もしません。 Angular DELETE要求とともに提供されるファイルは削除されません。

私はすでに試してみましたいくつかの事柄:

は、ファイルの操作を::代わりにストレージ)(削除::リンク解除を使用した作業)( を削除()の代わりにOP Laravelファサード。 HTTP DELETE要求を使用してimageToDeleteをデータとして送信します(URLには含まれません)。 しかし、すべて成功していない。

Laravel(PHP)で画像を削除するにはどうすればよいですか?

ありがとうございました!

+0

具体的な問題はあまり明確ではありません。 [ask] – charlietfl

+0

ご意見ありがとうございます。私は私の質問を更新しました。うまくいけば、それは今明らかになるでしょう。 – user3634184

+0

いいえ....実際にはありません。良い質問は、最初に問題を適切に説明するだけでなく、トラブルシューティングの詳細を提供するだけでなく、どの部分がうまく動作しているのか、何が問題でないのかを説明するために少し努力が必要です – charlietfl

答えて

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

を試すことができます。 laravelストレージまたはファイルfacdeを使用する場合、ファイルパスは絶対パスにする必要があります。public_path($imageToDelete)

関連する問題