获取ajax中的图像路径并在laravel 5.4中删除该图像

时间:2017-05-17 13:06:35

标签: php jquery ajax laravel

我在项目中使用laravel 5.4我在源文件中显示了我的图像 在laravel刀片中它正确显示图像..

 <div  id="dis_img">
                    @foreach($detail_dir_imgs as $detail_dir_img)
                      <img src="{{ asset($detail_dir_img) }}" height="230" width="200" id="pro_img">
                      <span class="del_proimg">X</span>
                    @endforeach
                  </div> 

现在我在del_proimg点击功能中获取了图像src属性,这意味着当我点击这个id时我想要删除图像,而我点击功能中的代码是

$('.del_proimg').click(function(){
      var img= $('#pro_img').attr("src");
      alert(img);
       $.ajax({
        type: "GET",
        url: '/deleteimg',
        data: {'img':img},
        success: function(data){
          console.log("ajaxdata",data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
          console.log(JSON.stringify(jqXHR));
          console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
        }
      });
    });

当点击id时,它获取imagepath并将数据传递给控制器​​一切正常但在我的控制器中当我尝试删除图像路径时它不会删除图像而我的控制器代码是

  public function deleteimg(Request $request){
            $img =$request->img;
            @unlink(public_path( $img));
            return Response::json([
              'message' => $request->img
          ], 200);

        }

这是否正确我也尝试了这个File::delete($img)但它不删除我的文件夹中的图像,但没有错误显示请任何人帮我解决这个问题

3 个答案:

答案 0 :(得分:4)

您将整个图像源传递给函数deleteimg为$ img。刚发送图像名称。然后使用取消链接(路径到你的图像&#34; /&#34;图像名称)。 就像您可以将图像保存在puplic / uploads中一样,然后使用unlink(public_path()。&#39; / uploads /&#39;。$ imageName);

答案 1 :(得分:0)

试试这个

unlink(public_path().'/'.$img);

这项工作对我来说很好

答案 2 :(得分:0)

这可能有用。只需通过ajax调用发送图像路径。如果删除文件,则返回true。并在web.php文件中检查您的路线

use Illuminate\Support\Facades\Storage;

public function deleteimg($file_path){
      Storage::delete($file_path);
      return response()->json(array('success' => true));
}