Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memuat naik fail dan menyimpannya ke pangkalan data dalam php

Bagaimana untuk memuat naik fail dan menyimpannya ke pangkalan data dalam php

PHPz
PHPzasal
2023-04-06 08:54:001773semak imbas

Memuat naik fail ialah ciri yang sangat biasa dalam aplikasi moden, dan aplikasi web tidak terkecuali. Dalam aplikasi web, kadangkala kami perlu membenarkan pengguna memuat naik fail seperti gambar, dokumen, dsb., dan PHP ialah bahasa skrip sebelah pelayan yang popular yang boleh mengendalikan operasi muat naik fail dengan mudah. Dalam artikel ini, kami akan menerangkan cara menyimpan fail yang dimuat naik ke dalam pangkalan data menggunakan PHP.

  1. Penyediaan borang HTML

Pertama, kami memerlukan borang HTML supaya pengguna boleh memilih fail untuk dimuat naik. Kami menggunakan elemen HTML5 untuk membina borang Kod HTML adalah seperti berikut:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传文件" name="submit">
</form>

Atribut tindakan dalam teg borang menentukan URL pemprosesan muat naik fail. skrip, dan atribut kaedah Nyatakan kaedah HTTP untuk digunakan. Kami menggunakan kaedah POST kerana kami perlu menyimpan fail yang dimuat naik ke pelayan.

Atribut enctype menentukan jenis pengekodan yang akan digunakan Untuk dapat memuat naik fail, kami menentukan data berbilang bahagian/bentuk. Elemen

digunakan untuk memilih fail untuk dimuat naik. Kami juga menambah butang hantar supaya pengguna boleh memuat naik fail terpilih ke pelayan.

  1. Skrip pemprosesan bahagian pelayan

Sekarang kita perlu menulis skrip PHP untuk mengendalikan permintaan untuk memuat naik fail. Kami akan menulis skrip ini dalam fail upload.php. Dalam skrip ini, kami akan menyemak dahulu sama ada fail yang dimuat naik wujud dan jika muat naik berjaya. Jika muat naik berjaya, kami akan mendapatkan data daripada fail yang dimuat naik dan menyimpannya ke pangkalan data.

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "文件是一个图片类型 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "文件不是一个图片类型.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "已存在同名文件.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "文件太大了.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "只支持JPG, JPEG, PNG和GIF文件类型.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "文件上传失败.";

// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "文件 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). "已经被上传.";
    
    // 保存文件数据到数据库中 
    
  } else {
    echo "文件上传发生错误.";
  }
}
?>

Dalam skrip ini, pembolehubah $target_dir menentukan direktori fail yang dimuat naik. Pembolehubah $target_file menentukan nama fail untuk disimpan. Pembolehubah $_FILES mengandungi data fail yang dimuat naik. Kami menggunakan fungsi basename() untuk mendapatkan nama fail dan fungsi strtolower() untuk menukar sambungan kepada huruf kecil. Pembolehubah $uploadOk digunakan untuk menjejak sama ada muat naik berjaya dan pembolehubah $imageFileType menyimpan jenis fail yang dimuat naik.

Kami menggunakan fungsi getimagesize() untuk menyemak sama ada fail yang dimuat naik adalah daripada jenis imej. Jika ia adalah jenis imej, kami akan mengeluarkan jenis mime fail. Jika tidak, kami akan menetapkan pembolehubah $uploadOk kepada 0, menunjukkan bahawa muat naik gagal.

Seterusnya, kami menyemak sama ada fail itu sudah wujud. Jika ia wujud, tetapkan pembolehubah $uploadOk kepada 0, menunjukkan bahawa muat naik gagal.

Kami juga menyemak sama ada saiz fail memenuhi keperluan. Jika ia lebih besar daripada 500 KB, tetapkan pembolehubah $uploadOk kepada 0, menunjukkan bahawa muat naik gagal.

Akhir sekali, kami menyemak sama ada jenis fail memenuhi keperluan Kini hanya jenis JPG, JPEG, PNG dan GIF yang disokong. Jika tidak, tetapkan pembolehubah $uploadOk kepada 0, menunjukkan bahawa muat naik gagal.

Jika semua semakan lulus, cuba alihkan fail yang dimuat naik ke direktori yang ditentukan. Jika langkah itu berjaya, mesej bahawa fail telah dimuat naik dikeluarkan dan data fail yang dimuat naik disimpan dalam pangkalan data. Jika tidak, mesej ralat akan dikeluarkan.

  1. Simpan data fail ke pangkalan data

Selepas berjaya memuat naik fail, kami perlu menyimpan data fail ke pangkalan data. Dalam contoh ini, kami mencipta jadual pangkalan data dengan 3 medan: id, FileName dan fileData.

Sambungan pangkalan data dan pernyataan $sql diperlukan untuk melaksanakan fungsi ini. Pernyataan $sql perlu memasukkan kedua-dua nama fail dan data fail. Dalam PHP, kita boleh menggunakan fungsi fopen(), fread() dan fclose() untuk memproses data fail. Jadi, untuk memasukkan data fail ke dalam pernyataan $sql, kita perlu menggunakan fungsi fopen() dahulu untuk membuka fail, kemudian gunakan fungsi fread() untuk membaca data daripada fail, dan akhirnya gunakan fungsi fclose() untuk tutup fail. Kodnya adalah seperti berikut:

<?php
$conn = new mysqli("localhost", "root", "", "test");
if ($conn->connect_error) {
  die("连接数据库失败: " . $conn->connect_error);
}

// Check server connection
if ($conn->connect_error) {
  die("连接数据库失败: " . $conn->connect_error);
} 

$fileName = $_FILES["fileToUpload"]["name"];
$fileData = "";

// Open the file for reading
$file = fopen($target_file, "r");

// Read from the file until the end
while(!feof($file)) {
  $fileData .= fread($file, 8192);
}

// Close the file
fclose($file);

// Prepare SQL statement
$sql = "INSERT INTO upload_files (fileName, fileData) VALUES ('$fileName', '$fileData')";

if ($conn->query($sql) === TRUE) {
  echo "上传成功!";
} else {
  echo "上传失败:" . $conn->error;
}

$conn->close();
?>

Dalam skrip ini, kami membuka fail dan menggunakan fungsi fread() untuk membaca semua data fail. Data ini disimpan dalam pembolehubah $fileData, dan data fail baharu yang dimuat naik dimasukkan dalam penyata $sql.

Kini, kami telah melaksanakan fungsi menyimpan fail yang dimuat naik ke dalam pangkalan data.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara memuat naik fail dan menyimpan data fail ke dalam pangkalan data menggunakan PHP. Kami bermula dengan borang HTML, kemudian menulis skrip pemprosesan bahagian pelayan dan menyimpan data fail yang dimuat naik ke dalam pangkalan data. Contoh ini menunjukkan proses lengkap memuat naik dan menyimpan fail ke pangkalan data dan harus berguna kepada pembangun web.

Atas ialah kandungan terperinci Bagaimana untuk memuat naik fail dan menyimpannya ke pangkalan data dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn