ในการอัปโหลดไฟล์ เราจำเป็นต้องใช้ type=file type ของแบบฟอร์มใน HTML และแอตทริบิวต์ enctype นี่คือสิ่งที่เราทุกคนต้องใช้ แน่นอนว่าเราต้องใช้ไลบรารีฟังก์ชัน FILE ไลบรารีฟังก์ชันประเภทสตริง ไลบรารีฟังก์ชันไดเร็กทอรี และ $_FILES[] ในกลุ่มฟังก์ชัน PHP
บางทีทุกไซต์อาจมีข้อจำกัดมากมายในการอัปโหลดไฟล์ ข้อจำกัดเหล่านี้อาจรวมถึงประเภทไฟล์ ขนาดไฟล์ นามสกุล และการมีอยู่ของไดเรกทอรีที่อัปโหลด การมีอยู่ของไฟล์ที่อัปโหลด ความสามารถในการเขียนของไดเรกทอรี และความสามารถในการอ่าน การเปลี่ยนชื่อของ ไฟล์ที่อัพโหลดและวิธีคัดลอกไฟล์จากแคชไปยังไดเร็กทอรีที่คุณต้องการ
แน่นอนว่าการประมวลผลข้อผิดพลาดล่วงหน้าไม่สามารถละเลยได้ หากเราหารือเพิ่มเติม เรายังสามารถเปิดใช้งานการบันทึกบันทึกเหตุการณ์สำหรับการทำงานของไฟล์ได้
ด้านล่างเราใช้ฟังก์ชันเหล่านี้ผ่านโปรแกรม:
ประการแรกคือค่าตัวแปรที่ตั้งไว้ล่วงหน้าของเรา ซึ่งรวมถึงขนาดไฟล์ ประเภทนามสกุลไฟล์ ประเภท MIMI และจะลบตัวแปรสวิตช์
$MAX_SIZE = 2000000 หรือไม่
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');
$FILE_EXTS = array('.zip','.jpg','.png','.gif');
$DELETABLE = true
; ตั้งค่าตัวแปรการเข้าถึงเบราว์เซอร์และตัวแปรการเข้าถึงไดเรกทอรี:
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];
$upload_dir = ไฟล์/;
$upload_url = $url_dir./files/;
$message =;
สร้างไดเร็กทอรีอัพโหลดและเปลี่ยนการอนุญาตตามนั้น:
if (!is_dir(files)) {
ถ้า (!mkdir($upload_dir))
die (ไม่มีไดเร็กทอรี upload_files และการสร้างล้มเหลว);
ถ้า (!chmod($upload_dir,0755))
die (เปลี่ยนการอนุญาตเป็น 755 ล้มเหลว)
}
การจัดการคำขอของผู้ใช้:
ถ้า ($_REQUEST[del] && $DELETABLE) {
$ทรัพยากร = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($resource);
if (strpos($_REQUEST[del],/.)>0); // เป็นไปได้ในการแฮ็ก
อื่น ๆ ถ้า (strpos($_REQUEST[del],files/) === false); // แฮ็คที่เป็นไปได้
อื่นถ้า (substr($_REQUEST[del],0,6)==files/) {
ยกเลิกการเชื่อมโยง($_REQUEST[del]);
พิมพ์ <script><window.location.href='$url_this?message=deletedเรียบร้อยแล้ว'</script><;
-
-
อื่นถ้า ($_FILES ['ไฟล์ผู้ใช้']) {
$ทรัพยากร = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['ไฟล์ผู้ใช้']['ชื่อ']
.$_FILES['userfile']['type'].\n);
fclose($resource);
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
// ตรวจสอบขนาดไฟล์:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = ขนาดไฟล์เกิน 2MB.;
//ตรวจสอบประเภทไฟล์/นามสกุล
อย่างอื่นถ้า (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = ขออภัย $file_name($file_type) ไม่ได้รับอนุญาตให้อัพโหลด;
อื่น
$message = do_upload($upload_dir, $upload_url);
พิมพ์ <script>window.location.href='$url_this?message=$message'</script>;
-
อย่างอื่นถ้า (!$_FILES['userfile']);
อื่น
$message = ระบุไฟล์ไม่ถูกต้อง;
แสดงรายการไฟล์ที่เราอัพโหลด:
$handle=opendir($upload_dir);
$ไฟล์รายการ = ;
ในขณะที่ ($file = readdir($handle)) {
ถ้า(!is_dir($ไฟล์) && !is_link($ไฟล์)) {
$filelist .= <a href='$upload_dir$file'><.$file.</a>;
ถ้า ($ ลบได้)
$filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font><</เล็ก><</เล็ก></sub><;
$ไฟล์รายการ .=<br>;
-
}
ฟังก์ชั่น do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name;
// ตรวจสอบชื่อไฟล์
ถ้า ( $file_name ==) {
$message = ชื่อไฟล์ที่ระบุไม่ถูกต้อง;
กลับ $ข้อความ;
}
$result = move_uploaded_file($temp_name, $file_path);
ถ้า (!chmod($file_path,0777))
$message = เปลี่ยนสิทธิ์เป็น 777 ล้มเหลว;
อื่น
$message = ($result)?$file_name อัพโหลดเรียบร้อยแล้ว :
มีบางอย่างผิดปกติกับการอัพโหลดไฟล์;
กลับ $ข้อความ;
}
?>
<ศูนย์กลาง
>
<สีแบบอักษร=สีแดง><<?=$_REQUEST[ข้อความ]?></แบบอักษร>
<br>
<ชื่อฟอร์ม=upload id=upload ENCTYPE=multipart/form-data method=post>
อัปโหลดไฟล์ <input type=file id=userfile name=userfile>
<ประเภทอินพุต=ชื่อส่ง=ค่าอัพโหลด=อัพโหลด>
</form>
<br><b>ไฟล์ของฉัน</b>
<ความกว้างชม=70%>
<?=$รายการไฟล์?>
<ความกว้างชม=70%>
<เล็ก><sup>พัฒนาโดย
<a style=text- decoration:none href=http://tech.citypost.ca">CityPost.ca</a>
</ซุป></เล็ก>
</ศูนย์>