【问题标题】:Upload image according to name in PHP在PHP中根据名称上传图片
【发布时间】:2013-08-16 13:53:58
【问题描述】:

假设有 2 张不同名称的相同图像。我想上传这些图片并将它们放在不同的文件夹中。假设 img1.jpg & a-img1.jpg 是图像。现在 img1.jpg 将继续位于“files/images/”位置,而 a-img1.jpg 将继续位于“files/a-images/”位置。我已成功上传图片,但它只会转到一个目标文件夹。这是我的代码,

    $upload_errors = 0;
    $images= $_FILES['img'];
    $img_id = get_new_image_id();
    $image_ok = true;
    $queries = array();
    $allowed_exts    = array('jpg', 'png', 'jpeg', 'gif');
    foreach ($images['tmp_name'] as $key => $val ) {
        $fileName = $images['name'][$key];
        $fileSize = $images['size'][$key];
        $fileSize = round($fileSize/1024);
        $fileTemp = $images['tmp_name'][$key];
        $path_parts = pathinfo($fileName);
        $fileExt = $path_parts['extension'];
        $fileExt = strtolower($fileExt);
        if($fileSize > 2*1024){
            $image_ok = false;
        }
        if(!in_array($fileExt, $allowed_exts)){
            $image_ok = false;
        }
        if($image_ok){
            $upload_link = "files/images/".$img_id.".".$fileExt;
    $tupload_link = "files/a-images/".$img_id.".".$fileExt;

        move_uploaded_file($fileTemp, $upload_link);
        move_uploaded_file($fileTemp, $tupload_link);
        $img_id++;
        }else{
            $upload_errors++;
        }

有没有办法识别像“a-img1.jpg”这样的图像文件?我非常需要这个帮助。提前Tnx!

【问题讨论】:

  • 两个图像在表单img 上是否具有相同的名称?为两张图片设置不同的名称,然后您将能够识别要在哪个文件夹中上传哪个图片。
  • @DeadMan,不,我必须使用单个多个上传按钮。多张图片将同时上传,我的程序需要识别哪个有“a”。
  • 检查上传文件的name,确定哪个位置适合它。
  • 如果您移动了一次上传的文件,您将无法在同一个文件上再次移动,因为它已经被移动了。
  • 这是一个坏主意,因为文件名中可以​​包含字符“a”,但如果您愿意,可以使用 strpos 函数在文件名中找到“a”的位置。如果你得到它,然后将它上传到不同的文件夹中。在这里阅读更多:php.net/manual/en/function.strpos.php

标签: php image


【解决方案1】:

由于您已经移动该文件,因此从同一来源进行的第二次移动将不起作用。也许您应该第二次复制该文件。

【讨论】:

    【解决方案2】:

    你可以使用这个函数来查看字符串是否以“a-”开头:

    function startsWith($haystack, $needle){
        return strpos($haystack, $needle) === 0;
    }
    

    所以你会做这样的事情:

    if(startsWith($img_id, "a-")){
        $upload_link = "files/a-images/".$img_id.".".$fileExt;
    }else{
        $upload_link = "files/images/".$img_id.".".$fileExt;
    }
    
    move_uploaded_file($fileTemp, $upload_link);
    

    【讨论】:

    • 什么是$haystack & $needle
    • 它们是函数调用时的参数。所以 $needle 就是你在 $haystack 中寻找的东西。所以当你这样做时:startsWith($img_id, "a-") 它正在大海捞针 $img_id 中寻找针“a-”。
    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2012-09-02
    • 2015-05-02
    相关资源
    最近更新 更多