【问题标题】:codeigniter uploads directory, unlink photocodeigniter 上传目录,取消链接照片
【发布时间】:2013-01-12 10:27:48
【问题描述】:

我正在使用 codeigniter 创建我网站的管理面板。我没有将它用于前端,因为我在前端有很多静态页面,只有少数东西需要动态,所以我将使用核心 PHP 查询来做。

我取消链接照片的链接是,images是控制器,unlinkPhoto是函数,32是图像ID。

localhost/admin/index.php/images/unlinkPhoto/32

编辑

但是我的图片位于localhost/uploads/testimage.jpg. 如何指向该文件夹以取消链接 codeigniter 中的图像。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您确实需要确保执行了适当的安全协议,否则任何人都可以伪造 GET 请求并删除您上传的全部文件。这是一个基本的解决方案:

    public function unlinkPhoto($photoId)
    {
       // Have they specified a valid integer?
       if ((int) $photoId > 0) {
          foreach (glob("uploads/*") as $file) {
             // Make sure the filename corresponds to the ID
             // Caters for all file types (not just JPGs)
             $info = pathinfo($file);
             if ($info['filename'] == $photoId) {
                unlink($file);
             }
          }
       }
    }
    

    如果您使用的是 PHP 5.4,您可能可以进一步减少此代码:

    if (pathinfo($file)['filename'] == $photoId) {
       unlink($file);
    }
    

    因为他们已经implemented array dereferencing(终于)了。虽然我还没有测试过这段特定的代码。这只是一个令人讨厌的附录。

    【讨论】:

    • 您可以使用pathinfo($file, PATHINFO_FILENAME),因此无需获取其他组件,也无需取消数组引用。
    • 更好!谢谢神秘:)
    • @hohner 但我仍然无法取消图像的链接。 localhost/admin/index.php/images/unlinkPhoto/32 是删除链接,localhost/uploads/testfile.jpg 是文件名。我仍然无法通过取消链接指向该文件
    • 我以为你说你的文件是用数字作为文件名保存的?
    • @hohner 对不起,我正在更新它,
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多