【问题标题】:how to print a selected photo name from input type如何从输入类型打印选定的照片名称
【发布时间】:2017-07-01 09:04:36
【问题描述】:

谁能告诉我,如何打印照片名称?照片将从输入type=file中选择。

这是我迄今为止尝试过的:

$photo = $_FILES['photo']['tmp_name'];
//$photo_name = basename($photo);
echo $photo;

此代码不显示实际文件名。它像这样打印 (php3515.tmp);

【问题讨论】:

标签: php file-upload


【解决方案1】:

打印文件name 而不是tmpname

试试这个:

echo $_FILES['photo']['name'];

【讨论】:

    【解决方案2】:

    php3515.tmp 在您的情况下是 PHP 生成的临时文件。您必须使用 move_uploaded_file() 函数将此文件移动到您想要的位置,该函数将您的 $_FILES['photo']['tmp_name'] 作为第一个参数,并将路径和新文件名作为第二个参数。

    这是取自PHP manual的示例:

    $uploaddir = '/var/www/uploads/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    
    echo '<pre>';
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo "File is valid, and was successfully uploaded.\n";
    } else {
        echo "Possible file upload attack!\n";
    }
    
    echo 'Here is some more debugging info:';
    print_r($_FILES);
    
    print "</pre>";
    

    注意此示例中的$_FILES['userfile']['name'],其中包含原始文件名。

    【讨论】:

    • 这甚至没有回答 OP 的问题,这只是 “我如何打印照片名称”。
    • @Magnus 是的,我的错误。我已经编辑了答案以突出显示$_FILES 数组中的name 索引。我在这里留下答案,因为它可以提供有关 PHP 文件上传的更多有用信息。尤其是 print_r($_FILES); 线路出于教育原因将是无价的。
    【解决方案3】:

    你需要知道,you have 5 parameters 在$_FILES['userfile']:

    • 名称 - 上传文件的原始名称
    • tmp_name - 由系统物理写入磁盘的系统名称
    • 大小 - 文件大小
    • 错误 - 错误代码 - 0 表示没有问题
    • type - 保存文件的类型

    如果要显示原始名称,只需使用:

    $_FILES['userfile']['name']
    

    您还拥有move_uploaded_file() 功能,可让您安全地将文件从临时位置移动到您自己的位置。另一种方式,PHP进程结束后,您上传的文件将被删除。

    $path = __DIR__  . '/upload/' . basename($_FILES['userfile']['name']);
    $result = move_uploaded_file($_FILES['userfile']['tmp_name'], $path);
    

    $result 告诉你,系统是否正确地将文件保存在给定位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2021-12-08
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多