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

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

Apr 06, 2023 am 08:54 AM

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>
Salin selepas log masuk

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 "文件上传发生错误.";
  }
}
?>
Salin selepas log masuk

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();
?>
Salin selepas log masuk

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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. PHP 8 JIT (Just-in-Time) Penyusunan: Bagaimana ia meningkatkan prestasi. Mar 25, 2025 am 10:37 AM

Kompilasi JIT Php 8 meningkatkan prestasi dengan menyusun kod yang sering dilaksanakan ke dalam kod mesin, memberi manfaat kepada aplikasi dengan pengiraan berat dan mengurangkan masa pelaksanaan.

OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. OWASP Top 10 PHP: Huraikan dan mengurangkan kelemahan umum. Mar 26, 2025 pm 04:13 PM

Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. PHP Secure File Muat naik: Mencegah kelemahan berkaitan fail. Mar 26, 2025 pm 04:18 PM

Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

Penyulitan PHP: Penyulitan simetri vs asimetrik. Penyulitan PHP: Penyulitan simetri vs asimetrik. Mar 25, 2025 pm 03:12 PM

Artikel ini membincangkan penyulitan simetri dan asimetrik dalam PHP, membandingkan kesesuaian, prestasi, dan perbezaan keselamatan mereka. Penyulitan simetri lebih cepat dan sesuai untuk data pukal, manakala asimetrik digunakan untuk pertukaran utama yang selamat.

Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Pengesahan PHP & amp; Kebenaran: Pelaksanaan selamat. Mar 25, 2025 pm 03:06 PM

Artikel ini membincangkan pelaksanaan pengesahan dan kebenaran yang mantap dalam PHP untuk mencegah akses yang tidak dibenarkan, memperincikan amalan terbaik dan mengesyorkan alat peningkatan keselamatan.

PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. PHP CSRF Perlindungan: Bagaimana untuk mencegah serangan CSRF. Mar 25, 2025 pm 03:05 PM

Artikel ini membincangkan strategi untuk mencegah serangan CSRF di PHP, termasuk menggunakan token CSRF, kuki tapak yang sama, dan pengurusan sesi yang betul.

Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Bagaimana anda mengambil data dari pangkalan data menggunakan PHP? Mar 20, 2025 pm 04:57 PM

Artikel membincangkan mendapatkan data dari pangkalan data menggunakan PHP, meliputi langkah, langkah keselamatan, teknik pengoptimuman, dan kesilapan umum dengan penyelesaian.

Apakah tujuan penyataan yang disediakan dalam PHP? Apakah tujuan penyataan yang disediakan dalam PHP? Mar 20, 2025 pm 04:47 PM

Kenyataan yang disediakan dalam PHP meningkatkan keselamatan pangkalan data dan kecekapan dengan mencegah suntikan SQL dan meningkatkan prestasi pertanyaan melalui kompilasi dan penggunaan semula.

See all articles