PHP ialah bahasa pengaturcaraan sebelah pelayan yang biasa digunakan, selalunya digunakan untuk pembangunan web. Kelebihannya ialah ia mudah dipelajari dan digunakan, serta digunakan secara meluas dalam projek komersil dan sumber terbuka. Semasa proses pembangunan, memuat naik fail adalah satu kemestian kerana ia menyediakan cara yang mudah dan berkesan untuk memuat naik fail ke pelayan web. Walau bagaimanapun, kadangkala kita mahu fail yang dimuat naik oleh pengguna tidak dipaparkan secara langsung pada halaman web, tetapi perlu diproses di latar belakang sebelum dipaparkan. Jadi bagaimana kita boleh mencapai ini?
Dalam artikel ini, saya akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pratonton tanpa memuat naik. Sebelum anda memulakan, pastikan anda biasa dengan asas PHP.
Langkah 1: Buat borang HTML
Pertama, kita perlu mencipta borang muat naik fail pada halaman HTML supaya pengguna boleh memuat naik fail. Dalam borang, kita perlu menambah elemen input jenis fail standard dan butang hantar Kod adalah seperti berikut:
<html> <head> <title>文件上传示例</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <br> <input type="submit" value="上传"> </form> </body> </html>
Langkah 2: Muat naik dan proses fail
Apabila. klik pengguna hantar Apabila butang ditekan, data borang akan dihantar ke fail upload.php pada pelayan. Kami perlu menyelesaikan tugas memuat naik dan memproses fail dalam fail ini.
Pertama, kita perlu menyemak sama ada fail yang dimuat naik itu wujud dan menentukan sama ada terdapat sebarang ralat semasa proses muat naik. Untuk mencapai fungsi ini, kita boleh menggunakan fungsi terbina dalam PHP is_uploaded_file()
dan move_uploaded_file()
. Kodnya adalah seperti berikut:
<?php if (isset($_FILES["file"]) && !empty($_FILES["file"]["name"])) { $file = $_FILES["file"]; // 检查上传的文件是否是有效的文件 if (!is_uploaded_file($file["tmp_name"])) { die("上传文件无效"); } // 将上传的文件从临时目录移动到我们指定的目录 if (!move_uploaded_file($file["tmp_name"], "./upload/" . $file["name"])) { die("无法移动文件"); } // 在这里对上传的文件进行处理,例如调用ImageMagick库对图片进行处理 // ...... } else { die("请选择要上传的文件"); } ?>
Dalam contoh ini, kami mula-mula menyemak sama ada fail yang dimuat naik itu sah. Jika fail tidak sah, keluarkan "Fail yang dimuat naik tidak sah" dan keluar dari program. Jika fail itu sah, ia dipindahkan ke direktori yang kami tentukan. Jika sebarang ralat berlaku semasa pemindahan, "Tidak dapat memindahkan fail" adalah output dan program keluar. Akhir sekali, di bahagian lain skrip ini, kita boleh melakukan sesuatu dengan fail yang dimuat naik.
Langkah 3: Jangan kembali ke pratonton terus
Dalam kod di atas, kami telah memuat naik dan memproses fail. Walau bagaimanapun, matlamat kami bukanlah untuk mengembalikan pratonton secara langsung. Untuk mencapai matlamat ini, kami perlu menyimpan URL fail yang dimuat naik ke dalam pangkalan data dan menjana kunci pada masa yang sama. Kami kemudiannya boleh menyerahkan kunci ini kepada pengguna dan memberitahu mereka untuk menggunakannya untuk melihat fail pada masa hadapan.
Andaikan kita mempunyai pangkalan data bernama "fail" yang mengandungi lajur bernama "url" dan lajur bernama "kunci". Kami boleh menyimpan URL fail yang dimuat naik dan kunci yang dijana ke dalam pangkalan data menggunakan kod berikut:
<?php // 建立数据库连接 $host = "localhost"; $username = "root"; $password = ""; $database = "files"; $conn = mysqli_connect($host, $username, $password, $database); // 检查连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } if (isset($_FILES["file"]) && !empty($_FILES["file"]["name"])) { $file = $_FILES["file"]; // 检查上传的文件是否是有效的文件 if (!is_uploaded_file($file["tmp_name"])) { die("上传文件无效"); } // 将上传的文件从临时目录移动到我们指定的目录 if (!move_uploaded_file($file["tmp_name"], "./upload/" . $file["name"])) { die("无法移动文件"); } // 在这里对上传的文件进行处理,例如调用ImageMagick库对图片进行处理 // ...... // 将上传文件的URL和生成的密钥存储到数据库中 $url = "http://www.example.com/upload/" . $file["name"]; $key = md5($url . time()); $sql = "INSERT INTO files (url, `key`) VALUES ('$url', '$key')"; if (mysqli_query($conn, $sql)) { echo "上传成功,密钥是 $key"; } else { echo "上传失败,请重试"; } } else { die("请选择要上传的文件"); } // 关闭数据库连接 mysqli_close($conn); ?>
Dalam kod di atas, kami telah menggunakan perpustakaan MySQLi untuk menyambung ke pangkalan data. Kami mula-mula mewujudkan sambungan sebelum memuat naik fail dan menutup sambungan selepas memuat naik fail. Kami kemudian menyimpan URL fail yang dimuat naik dan kunci yang dijana ke dalam pangkalan data supaya kami kemudian boleh mencari fail berdasarkan kunci.
Langkah 4: Paparkan fail
Sekarang kami telah memuat naik fail dan menyimpannya ke pangkalan data, kami boleh mencari fail berdasarkan kunci dan memaparkannya. Kami hanya perlu mencipta URL yang mengandungi parameter rentetan pertanyaan "kunci" dan kemudian memautkannya ke pautan atau butang dalam halaman HTML. Apabila pengguna mengklik pautan atau butang, sistem menggunakan kunci itu untuk mencari fail daripada pangkalan data dan memaparkannya dalam halaman baharu.
Berikut ialah contoh kod mudah:
<?php // 建立数据库连接 $host = "localhost"; $username = "root"; $password = ""; $database = "files"; $conn = mysqli_connect($host, $username, $password, $database); // 检查连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } if (isset($_GET["key"]) && !empty($_GET["key"])) { $key = $_GET["key"]; // 从数据库中查找URL $sql = "SELECT url FROM files WHERE `key`='$key' LIMIT 1"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // 找到URL $row = mysqli_fetch_assoc($result); $url = $row["url"]; echo '<img src="' . $url . '">'; } else { // 找不到URL die("文件不存在"); } } else { die("无效的密钥"); } // 关闭数据库连接 mysqli_close($conn); ?>
Dalam kod di atas, kami mula-mula mewujudkan sambungan pangkalan data. Kami kemudian menyemak rentetan pertanyaan untuk parameter "kunci" dan menggunakannya untuk mencari URL daripada pangkalan data. Jika ditemui, fail dipaparkan. Jika tidak, jika kunci tidak sah, mesej ralat akan dikeluarkan.
Kesimpulan
Dalam artikel ini, kami memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pratonton tanpa memuat naik. Kami boleh menyimpan URL fail yang dimuat naik ke dalam pangkalan data dan menjana kunci untuknya. Kami kemudiannya boleh menyerahkan kunci itu kepada pengguna dan memberitahu mereka untuk menggunakan kunci itu untuk melihat fail pada masa hadapan. Menggunakan kaedah ini, kami boleh mempunyai kawalan yang lebih besar ke atas fail di tapak web dan memastikan bahawa fail hanya boleh dilihat dalam keadaan tertentu.
Atas ialah kandungan terperinci Contoh analisis cara menggunakan PHP untuk melaksanakan fungsi pratonton tanpa memuat naik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!