效果很好,但我不明白代码的一部分[图片上传]



编码社区怎么样?我正在学习PHP,我正试图用一个像"Instagram"这样的图像源或类似的东西制作一个小图像上传脚本。

顺便说一句,今天我吃了。codeccourse的一个很棒的教程,我像他一样编写了我的代码。除了第21 - 24行,我真的理解了他代码的每一部分。

如果你们中有谁能一步一步地解释这些行,我将非常感激。

我已经注释掉了这些行。

if(isset($_FILES['file'])) {
    $file = $_FILES['file'];
  //Datei Eigenschaften
  $file_name = $file['name'];
  $file_tmp = $file['tmp_name'];
  $file_size = $file['size'];
  $file_error = $file['error'];
  //File extensions
  $file_ext = explode('.', $file_name);
  $file_ext = strtolower(end($file_ext));
  $allowed = array('txt', 'jpg');
  if(in_array($file_ext, $allowed)) {
      if($file_error === 0) {
          if($file_size <= 2097152) {
            //$file_name_new = uniqid('', true) . '.' . $file_ext;
            //$file_destination = '../uploads/' . $file_name_new;
            //if(move_uploaded_file($file_tmp, $file_destination)) {
                  echo $file_destination;
              }
          }
      }
  }
}

谢谢

//$file_name_new = uniqid('', true) . '.' . $file_ext;
//$file_destination = '../uploads/' . $file_name_new;
//if(move_uploaded_file($file_tmp, $file_destination)) {
    echo $file_destination;

这是你不明白的部分吗?

第一行将为您上传的文件定义一个唯一的id,并将文件扩展名放在上面。比如someuniqueID.png。这是为了确保文件的名称不会被服务器上的另一个文件占用。因此,uniqid('', true)将生成一个随机ID,而$file_ext是上传文件的扩展名(jpg, png, gif或类似的东西)。

下一行是您定义存储上传文件的位置,在代码中您选择将文件存储在../uploads/中,然后使用在第一行(唯一名称)中构造的新文件名($file_name_new)。扩展).

最后一个if statement做两件事,使用您的唯一名称将实际文件移动到您的位置,并检查是否已经完成。如果它运行成功,它将echo输出完整的目的地和文件的新文件名。

$file_name_new = uniqid('', true) . '.' . $file_ext;

$file_name_new将为带有文件扩展名的图像创建一个唯一的名称。

$file_destination = '../uploads/' . $file_name_new;

$file_destination =是上传图片的新路径。

if(move_uploaded_file($file_tmp, $file_destination)) {
              echo $file_destination;
          }

上面的代码将把它出售的图像上传到新的位置。

最新更新