Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > การ Upload ไฟล์ เปลี่ยนมาใช้ฟังค์ชั่น move_upload_file แทน copy ดีกว่าครับ



 

การ Upload ไฟล์ เปลี่ยนมาใช้ฟังค์ชั่น move_upload_file แทน copy ดีกว่าครับ

 



Topic : 033114



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์




นะ นะ ขอร้องละ

ไม่ไช่อะไรหรอก ถ้าหากใช้การ copy

ไฟล์ที่อยู่ใน temp บน Server มันไม่ลบทิ้งอะซิ

ปรกติแล้ว การ copy จะใช้เมื่อต้องการ copy ไฟล์จริงๆ

นั้นคือ ไฟล์ต้นฉบับ ก็ต้องการ ไฟล์ใหม่ ก็อยากใช้

แต่การอัพโหลดไฟล์ ไฟล์ ต้นฉบับที่อยู่ใน temp เราไม่ต้องการแล้ว

เราควรใช้การ move แทนนะครับ

----

ยกตัวอย่างกรณีที่ผมใช้นะครับ

เว็บนี้ http://www.thaiselected.com/index.php

ทุกครั้งที่อัพโหลดไฟล์

ผมจะเก็บไว้ 5 ขนาด

1 ในนั้น จะเก็บ ต้นฉบับไว้

ส่วนอีก 4 ไฟล์ มาจากการ resize ครับ

และก่อน resize ผมเช็คก่อนว่า ขนาดมันใหญ่หรือเปล่า ถ้าเล็กกว่า ให้ copy จากต้นฉบับมาได้เลย ไม่ต้องไป resize มันแล้ว

ผมเก็บแยก Folder ตามขนาด

เพื่อเวลาดึงข้อมูล จะได้ไม่กิน Process เยอะ

-----------



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-10-15 17:55:15 By : danya View : 6562 Reply : 24
 

 

No. 1



โพสกระทู้ ( 1,439 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ผมว่า move_upload_file() ก็มีข้อเสีย มันต้องดึง temp จาก server สู่ไดเรททรอรีเป้าหมายใน server
ส่วน copy() มันดึงจาก temp จากเครื่องเรา สู่ไดเรททอรรีเป้าหมายใน server
ผมเข้าใจผิดป่ะครับ ผิดก็โทษที่นะครับ

http://community.thaiware.com/index.php?showtopic=327170
อันนี้อีกข้อมูลหนึ่งที่เขาอธิบายให้ฟังอีก






Date : 2009-10-15 18:45:33 By : xbeginner01
 


 

No. 2



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter



ผมคิดว่าไม่นะครับ (ยังไม่ได้อ่าน)

แต่ผมคิดว่า มันดึงจาก temp ใน server เหมือนกันแหละครับ
Date : 2009-10-15 18:49:11 By : pjgunner
 

 

No. 3



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

Quote:
Usage: bool copy ( string source, string dest [, resource context] )

Purpose: Copies file
Availability: PHP 4, PHP 5

Makes a copy of the file source to dest.

If you wish to move a file, use the rename() function.


Quote:
Usage: bool move_uploaded_file ( string filename, string destination )

Purpose: Moves an uploaded file to a new location
Availability: PHP 4 >= 4.0.3, PHP 5

This function checks to ensure that the file designated by filename is a valid upload file (meaning that it was uploaded via PHP's HTTP POST upload mechanism). If the file is valid, it will be moved to the filename given by destination.

This sort of check is especially important if there is any chance that anything done with uploaded files could reveal their contents to the user, or even to other users on the same system.


ข้อแตกต่างตามที่อ่านคือ copy() เอาไว้ก้อบปี้จากที่ไหนก็ได้ถ้ามีสิทธิการเข้าถึง

ส่วย move_uploaded_file() ก็ตามชื่อมันครับ (ต้องอัพ)
Date : 2009-10-15 18:58:48 By : pjgunner
 


 

No. 4



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


คห. แรก

เออ น่าจะเข้าใจผิดนะครับ

ไฟล์ที่อัพโหลดจะถูกเก็บไว้ใน เครื่อง Server นะ

จะเก็บใน temp เครื่องเราทำไมอา -*-
Date : 2009-10-15 19:12:31 By : danya
 


 

No. 5



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


อัพโหลดยังไงก็เข้า temp บน server อยู่แ้ล้วครับ
อยู่ที่ว่า php.ini มันจะ set ไว้ตรงไหนของ server ถ้าไม่ set มันจะอยู่ที่ default ของเครื่อง
ไม่มีหรอกมาดูดจาก temp เครื่องเรา เพราะมันทำงานฝั่งเซอเวอร์ครับ อัพโหลดทีมันก็สร้าง temp ไว้ นามสกุล .tmp มั้ง
ดังนั้นสองคำสั่งนี้ ต่างกันที่ move กับ copy ครับ
ปล. ผมไม่เคยใช้ copy ตั้งแต่หัดครั้งแรกละ เพราะใ้ช้แล้วมัน error ก็เลย หันมาใช้ move_upload แทน เหอะๆ error ครั้งเดียวก็เข็ดละ แป๋ววว...
ปล. 2 ทำไมอยู่ดีๆ ดุนมารณรงค์ซะงั้น
Date : 2009-10-15 19:25:52 By : plakrim
 


 

No. 6



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


ปล.3 เพราะว่า ตามเว็บไทย ผมเห็นเวลาโค้ดอัพโหลดแล้ว จะชอบใช้ copy กันจัง

ต่างจากค้นหาจาก Google จะไม่มีใครใช้ copy จะใช้แต่ mode_upload_file
Date : 2009-10-15 20:36:56 By : danya
 


 

No. 7



โพสกระทู้ ( 362 )
บทความ ( 0 )



สถานะออฟไลน์


move_upload_file <<< ทำไมใช้ไม่ได้อะครับหรือว่าเขียนให้ดูเฉยๆ
ที่ใช้เป็นอันนี้รึป่าวครับ move_uploaded_file เห็นอยู่ตรง โพสที่ 3
Date : 2009-10-16 00:38:24 By : hamzter
 


 

No. 8



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


Code
move_upload_file <<< ทำไมใช้ไม่ได้อะครับหรือว่าเขียนให้ดูเฉยๆ
ที่ใช้เป็นอันนี้รึป่าวครับ move_uploaded_file เห็นอยู่ตรง โพสที่ 3


ใช่ครับ ตามนั้น
Date : 2009-10-16 01:16:25 By : plakrim
 


 

No. 9



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


เขียนย่อๆ อะ 5555+
Date : 2009-10-17 16:26:02 By : danya
 


 

No. 10

Guest


แล้วมันใช้งานยังไงคับ ผมอยากทำเป็นบ้าง ตอนนี้ ใช้ copy แล้วมัน error นะคับ แบบนี้นะคับ


Warning: copy(photo/29.gif) [function.copy]: failed to open stream: Permission denied in D:\inetpub\vhosts\hattakam.com\httpdocs\admin_product_edit2.php on line 174


ไม่รู้ว่ามันเป็นเพราะอะไร พี่ ๆ ช่วยผมหน่อยได้ไหมคับ ขอบคุณคับ

Date : 2010-10-19 09:11:33 By : เด้กฝึกหัด
 


 

No. 11



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ถ้ามันไม่ลบเราก็ลบให้มันสิครับ unlink(file); อ่ะ
Date : 2010-10-19 09:20:55 By : manosate
 


 

No. 12

Guest


ผมใช้ script นี้คับ ... ผมทำในเครื่อง server จำลอง มันก็สามารถ เพิ่ม ลบ แก้ไข้ รูปภาพได้นะคับ แต่ ผมเอาลง sever จริง ๆ แล้ว
มันขึ้น error นะคับ Warning: copy(photo/29.gif) [function.copy]: failed to open stream: Permission denied in D:\inetpub\vhosts\hattakam.com\httpdocs\admin_product_edit2.php on line 174

..................................................................................................................................................................................
<?
$chkdel=$_POST[chkdel];
$id_edit=$_POST[id_edit];
$name=$_POST[name];
$ref_id_type=$_POST[ref_id_type];
$detail=$_POST[detail];
$price=$_POST[price];
$photo=$_POST[photo];
$fileupload=$_FILES['fileupload'] ['tmp_name'];
$fileupload_name=$_FILES['fileupload'] ['name'];
$fileupload_size=$_FILES['fileupload'] ['size'];
$fileupload_type=$_FILES['fileupload'] ['type'];

include "connect.php";
if ($chkdel=="1") {
$sql3="update tb_product set photo_prd=' ' where id_prd ='$id_edit' ";
$result3=mysql_db_query($dbname,$sql3);
unlink ("photo/$photo_del");
}

if ($fileupload) {
$array_last=explode(".",$fileupload_name);
$c=count ($array_last) - 1;
$lastname=strtolower($array_last[$c]);

if ($lastname=="gif" or $lastname=="jpg" or $lastname=="jpeg"){
$photoname=$id_edit.".".$lastname;
copy ($fileupload,"photo/".$photoname);

$sql3="update tb_product set photo_prd='$photoname' where id_prd ='$id_edit' ";
$result3=mysql_db_query($dbname,$sql3);

}
unlink ($fileupload);
}
$sql="update tb_product set
name_prd='$name',ref_id_type='$ref_id_type',detail_prd='$detail',price_prd='$price' where id_prd='$id_edit' ";
$result=mysql_db_query($dbname,$sql);
if ($result) {
echo "<h3> แก้ไข สินค้าเรียบร้อยแล้ว </h3>";
echo " [ <a href=admin_product.php>กลับหน้าหลัก </a> ]";
} else {
echo " <h3> ERROR : ไม่สามารถแก้ไขสินค้าได้ </h3>";
}
mysql_close();
?>
Date : 2010-10-19 09:25:31 By : เด้กฝึกหัด
 


 

No. 13



โพสกระทู้ ( 1,751 )
บทความ ( 0 )



สถานะออฟไลน์


มานติดเรือ่ง Permission อยู่้ครับ เวลาที่คุณจะ upload คุณต้อง ปรับ Permission ก่อนครับ ลองดูครับ
Date : 2010-10-19 09:28:03 By : SOUL
 


 

No. 14



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ปกติใช้แต่ copy ครับ แต่ถ้าให้ดีใช้การ move ดีกว่าครับ
Date : 2010-10-19 09:33:46 By : webmaster
 


 

No. 15

Guest


คือว่า ผมต้อง Permission ยังไงคับ แล้ว เปลียน ไฟล์ไหนคับ ช่วยผมที ผมทำยังไม่ได้คับ
Date : 2010-10-19 10:11:56 By : เด้กฝึกหัด
 


 

No. 16

Guest


หรือว่ามีวิธีไหนที่ง่ายกว่านี้ช่วยบอกผมทีคับ
Date : 2010-10-19 10:13:02 By : เด้กฝึกหัด
 


 

No. 17

Guest


ใช้ move_uploaded_file เท่านั้นครับ copy เสี่ยงต่อการถูก hack แต่จริงๆ คนมักจะ hack เพราะไม่ได้ตรวจนามสกุลไฟล์ที่ upload มากกว่า.. -*-
Date : 2010-10-19 10:15:08 By : ...
 


 

No. 18

Guest


พี่ ๆ ช่วย ยกตัวอย่างการใช้งานให้หน่อยคับ หรือ ไม่ก็ script ตัวอย่าง พอที่จะให้ผม มีแนวทาง การใช้งาน หน่อยคับ ผมไม่รู้ว่า move_upload_file มันใช้งานยังไงคับ ขอบคุณคับ
Date : 2010-10-19 10:18:27 By : เด้กฝึกหัด
 


 

No. 19

Guest


ผมทำได้แล้วคับ ขอบคุณมากคับสำหรับ คำตอบของพี่ ๆทุกคน ผมไปปรับ permission ก็เลยสามารถ upload รูปได้แล้ว ดีใจมากมายเลย
([ 0_0])
Date : 2010-10-19 10:52:36 By : เด้กฝึกหัด
 


 

No. 20

Guest


ใช้ copy ก็ได้ครับ ดีกว่า เพียงแต่ว่า ถ้ามีชื่อไพล์ซ้ำกันมันก็จะแก้ไข ไพล์นั้นเลย เราควรเช็คชื่อไพล์ ถ้าชื่อซ้ำก็ให้ใส่อะไรเข้าไปในชื่อไพล์เพื่อให้ชื่อมันไม่ซ้ำกัน ก็แค่นี้ครับ

ตัวอย่างการ ลบ ชื่อไพล์ฐานข้อมูล ในไพล์ข้อมูลในฐานข้อมูล
$sql2 = "SELECT* from attach_doc where documents_id = '$delete'";
$dbquery2 = mysql_query($sql2);
$result2 = mysql_fetch_array($dbquery2);
$d_file1 = $result2["d_file1"];
$d_file2 = $result2["d_file2"];
$d_file3 = $result2["d_file3"];
if($d_file1 != "") {
///////////////////////////////////////////////////////////// unlink คือการ ลบไพล์ข้อมูลใน host
unlink("d_file1/$d_file1");
} elseif($d_file2 != "") {
unlink("d_file2/$d_file2");
} if($d_file3 != "") {
unlink("d_file3/$d_file3");
}
///////////////////////////////////////////////////////////////////////// การลบข้อมูลในฐานข้อมูล
$strSQL = "DELETE FROM attach_doc ";
$strSQL .="WHERE documents_id = '$delete'";
$objQuery = mysql_query($strSQL);

////////////////////////////
$file1 = $_FILES["d_file1"]["name"]; /////// การชื่อไพล์

if($file1 != "") {
$sqlf = "SELECT* from attach_doc WHERE d_file1 = '$file1'"; ///////////// หาในฐานข้อมูลว่ามีชื่อไพล์ซ้ำกันมั้ย
$dbqueryf = mysql_query($sqlf);
$resultf = mysql_fetch_array($dbqueryf);
if ($resultf) {
$file1 = $re2._.$file1; ///////////////// ถ้าซ้ำให้ใส่ เวลาข้างหน้าไพล์ เพิ่มเป็นชื่อไพล์อีก
}
}
//////////////////////
copy($data_file1,"d_file1/".$file1); ////////// นี้ไง copy ไพล์หนะ
copy($data_file2,"d_file2/".$file2);
copy($data_file3,"d_file3/".$file3);

////////////////// add ชื่อไพล์เข้าสู่ฐานข้อมูล

$strSQL = "INSERT INTO attach_doc";
$strSQL .="(d_file1, d_file2, d_file3, documents_id) VALUES ('".$file1."', '".$file2."', '".$file3."', '$report2')";

///////////
ลองไปปรับ ใช้ดูนะครับ มีข้อส่งสัย
[email protected]
Date : 2010-10-29 21:13:49 By : manersci
 


 

No. 21



โพสกระทู้ ( 32 )
บทความ ( 0 )



สถานะออฟไลน์


move_uploaded_file ช่วยเรื่อง security ได้นะครับ
Date : 2010-10-30 17:23:01 By : unknowszaa
 


 

No. 22

Guest


คำสั่ง move กับ copy ต่างกันตรงไหน มีคำตอบมาให้ครับ

คำสั่ง move
เมื่อเราใช้ temp จะหายทันทีหลัง อัพเสร็จ ข้อดี คือ ประหยัด temp (ram) ข้อเสียเรียกใช้เพียงครั้งเดียว ถ้าไฟตกหรือด้วยเหตุไดๆ temp เสีย ไฟล์ที่อัพไปจะไม่สมบรูณ์ cpu จะไม่มีการตรวจเช็คว่า สมบูรณ์ แต่เช็คแค่ว่า อัพผ่าน แค่นั้น


คำสั่ง copy
เมื่อใช้คำสั่งแล้ว temp จะยังอยู่ สามารถเรียกใช้งานได้เรื่อยๆ past ได้เรื่องๆจาก temp เดิม ถ้ามีการเรียกใช้งานtempเดิมบ่อยๆ แนะนำให้ copy cpuตรจสอบ ข้อมูลเทียบ ได้ ข้อเสีย ต้อง Destroy หรือ unlink ทุกครั้ง หลังทำเสร็จ ไม่งั้น temp ค้าง สามารถโดย hack copy tempไปใช้ประโยชน์อื่นได้ และทำให้เครืองทำงานหนัก


แต่** ถ้าเป็นการ up to sever แล้วจาก ทีหนึ่งไปอีกที่ 1 ไป อีกที 1 temp จะอยู่บน server จะหายไปเอง ตามระยะเวลา ที่ php ini ได้ตั้งไว้ และ temp ในการเรียก ในเครื่องเราจะหายไปตอน เรา เปลี่ยนหน้าเว็บจากหน้า a ไป b ถ้ากระทำ ในหน้า a.php ตลอดๆ ก็จะทำให้ กิน ram ในเครื่องเรามากขึ้นในกรณี copy รัวๆ ข้อระวังใช้คำสั่ง copy อย่าเขียนโปรแกรม loop ไม่สิ้นสุด งั้นเครื่องมี ค้าง แงมๆ
Date : 2018-03-27 15:28:36 By : วีรวิทย์
 


 

No. 23



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


เข้ามาอัปเดทสรุปล่าสุดให้

คนที่จะใช้ย้ายไฟล์สำหรับการอัปโหลด ให้ใช้ move_uploaded_file() เท่านั้น. อ่านอ้างอิงได้ที่ https://www.php.net/manual/en/function.move-uploaded-file.php

เพราะเป็นฟังก์ชั่นที่ทำขึ้นมาเพื่อใช้ย้ายไฟล์ที่อัปโหลดแล้ว (ตามชื่อ) โดยมีให้ใช้งานตั้งแต่ PHP 4.0.3 เรื่อยมาจนถึงปัจจุบัน.

คนที่ใช้ฟังก์ชั่นอื่น เช่น copy ที่ไม่ใช่สร้างมาเพื่อย้ายไฟล์ที่อัปโหลด ถือเป็นการใช้งานผิดทุกกรณีไม่ว่าจะอ้างเหตุผลใดๆแม้จะอ้างว่ามันทำงานได้ก็ตาม ก็คือผิด!!
อ่านเหตุผลเพิ่มเติม:
https://stackoverflow.com/questions/16276835/php-move-uploaded-file-why-is-it-important
https://stackoverflow.com/questions/4031917/upload-file-using-php-copy-command
https://stackoverflow.com/questions/3924016/php-differences-between-copy-rename-and-move-uploaded-file
https://stackoverflow.com/questions/16276835/php-move-uploaded-file-why-is-it-important
นอกจากนี้ข้างบนก็แสดงเหตุผลที่ถูกต้องไว้หมดแล้ว ทั้งของคุณดุนยา, PlaKriM, เอี่ยว, และอีกหลายคน

ถ้าจะอ้างว่ามันทำงานได้ ก็ต้องถามต่อว่าได้ทุก server หรือไม่? ทุก server จริงๆไม่ใช่เดาเอานะ?
คำตอบก็คือไม่! เพราะหลาย server มีการกำหนดขอบเขตที่ PHP จะเข้าถึงไฟล์นั้นๆได้ ซึ่งใน folder temp มักจะหมดสิทธิ์ ยกเว้นฟังก์ชั่นดังกล่าว.


ประวัติการแก้ไข
2024-07-15 20:08:33
2024-07-15 20:09:08
2024-07-15 20:10:17
2024-07-16 06:02:55
2024-07-16 06:21:19
Date : 2024-07-15 20:08:15 By : mr.v
 


 

No. 24



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ทำโค้ดตัวอย่างมาให้ เผื่อจะเป็นประโยชน์สำหรับคนอื่นในอนาคต.
ในโค้ดมีเขียนคำอธิบายไว้ แต่ก็ควรทำความเข้าใจ เอาไปทดลองเล่นทดลองแก้ไขเพื่อให้เข้าใจด้วย เพื่อประโยชน์ของตัวเอง.

Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Upload form</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <!--input type="hidden" name="MAX_FILE_SIZE" value="1"--><!-- สำหรับทดสอบเท่านั้น --> เลือกไฟล์รูป: <input type="file" name="image-file" accept=".jpg,.jpeg,.gif,.png,.webp"> <p> <button type="submit">Submit</button> </p> </form> <p><a href="delete-all.php">ลบรูปที่อัปโหลดแล้วทั้งหมด</a>.</p> </body> </html>

form.html




Code (PHP)
<?php
// แสดง PHP error ทั้งหมดเพื่อหาข้อผิดพลาดขณะเขียนโค้ด.
// แม้จะกำหนดให้แสดง error หมดแล้ว แต่ถ้าไฟล์ใหญ่มากกว่าที่ server อนุญาต มันมีโอกาสที่จะแสดงหน้าขาวๆล้วนๆได้.
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
error_reporting(E_ALL);


$config = [];
$config['allowFileSize'] = 1000000;// ขนาดไฟล์ที่อนุญาต หน่วยเป็นไบต์ (1000000 = 1MB).
$config['allowMimeTypes'] = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];// mime type ไฟล์ที่อนุญาต (ตัวอักษรเล็กทั้งหมดเท่านั้น).
// ส่วนประมวลผล. ==============================================================
// @link https://www.php.net/manual/en/features.file-upload.post-method.php#example-445 อ้างอิงค่า array key ทั้งหมดในตัวแปร $_FILES.
if (
    isset($_FILES['image-file']['tmp_name']) 
    && is_uploaded_file($_FILES['image-file']['tmp_name'])
    && isset($_FILES['image-file']['error'])
    && isset($_FILES['image-file']['size'])
) {
    // ถ้ามีไฟล์อัปโหลดแล้ว.
    if ($_FILES['image-file']['error'] === UPLOAD_ERR_OK) {
        // ถ้าไฟล์อัปโหลดไม่มีข้อผิดพลาดเลย.
        if ($_FILES['image-file']['size'] > $config['allowFileSize']) {
            // ถ้าอัปโหลดไฟล์ใหญ่กว่าที่อนุญาต.
            $errorMessage = 'ขนาดไฟล์ใหญ่กว่าที่อนุญาต (' . $_FILES['image-file']['size'] . ' &gt; ' . $config['allowFileSize'] . ' ไบต์)';
        } else {
            // ถ้าอัปโหลดไฟล์ในขนาดไม่เกินที่อนุญาต.
            // ตรวจประเภทไฟล์ (mime type).
            $Finfo = new finfo(FILEINFO_MIME_TYPE);
            $mimeType = strtolower($Finfo->file($_FILES['image-file']['tmp_name']));
            unset($Finfo);
            if (!in_array($mimeType, $config['allowMimeTypes'])) {
                $errorMessage = 'คุณได้อัปโหลดประเภทไฟล์ที่ไม่อนุญาต. (' . $mimeType . ')';
            }
            unset($mimeType);
        }
    } else {
        // ถ้าไฟล์อัปโหลดมีข้อผิดพลาดบางอย่าง.
        switch ($_FILES['image-file']['error']) {
            case UPLOAD_ERR_INI_SIZE:
                $errorMessage = 'ขนาดไฟล์ใหญ่เกินกว่าที่กำหนดไว้โดย <code>upload_max_filesize</code> ใน php.ini. (' . ini_get('upload_max_filesize') . ')';
                break;
            case UPLOAD_ERR_FORM_SIZE:
                $errorMessage = 'ขนาดไฟล์ใหญ่เกินกว่าที่กำหนดไว้โดย <code>MAX_FILE_SIZE</code> ภายในแท็ก <code>&lt;form&gt;</code>.';
                break;
            case UPLOAD_ERR_PARTIAL:
                $errorMessage = 'ไฟล์ถูกอัปโหลดแค่เป็นบางส่วน.';
                break;
            case UPLOAD_ERR_NO_FILE:
                $errorMessage = 'คุณไม่ได้เลือกไฟล์.';
                break;
            case UPLOAD_ERR_NO_TMP_DIR:
                $errorMessage = 'ไม่พบโฟลเดอร์ temporary.';
                break;
            case UPLOAD_ERR_CANT_WRITE:
                $errorMessage = 'ไม่สามารถเขียนไฟล์ได้.';
                break;
            case UPLOAD_ERR_EXTENSION:
                $errorMessage = 'ส่วนขยายของ PHP นั้นหยุดการอัปโหลดไฟล์.';
                break;
            default:
                $errorMessage = 'มีข้อผิดพลาดที่ไม่ทราบสาเหตุ.';
                break;
        }// endswitch;
    }// endif; $_FILES ['error'] key.

    if (!isset($errorMessage)) {
        // ถ้าไม่มีข้อความ error ใดๆเลย.
        // ย้ายไฟล์ที่อัปโหลด มาที่โฟลเดอร์เดียวกันกับไฟล์นี้ ( __DIR__ ).
        $ext = pathinfo($_FILES['image-file']['name'], PATHINFO_EXTENSION);// ext ไม่มีจุด
        $newFileName = 'uploaded/' . date('YmdHis') . '.' . $ext;
        unset($ext);
        if (!is_dir(__DIR__ . DIRECTORY_SEPARATOR . 'uploaded')) {
            // ถ้าไม่มีโฟลเดอร์ปลายทางที่จะย้ายไฟล์เข้าไป ให้สร้างเตรียมไว้.
            mkdir(__DIR__ . DIRECTORY_SEPARATOR . 'uploaded');
        }

        if (!move_uploaded_file($_FILES['image-file']['tmp_name'], __DIR__ . DIRECTORY_SEPARATOR . $newFileName)) {
            // ถ้าย้ายไม่สำเร็จ.
            $errorMessage = 'ไม่สามารถย้ายไฟล์ที่อัปโหลดแล้วได้ อาจจะมีปัญหาเรื่องตำแหน่งที่ย้ายหรือการอนุญาตในระบบไฟล์.';
        } else {
            $success = true;
        }
    }
}// endif; there is an uploaded file.

// ข้างล่างนี้เป็นส่วนแสดงผล. =================================================
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Upload form result</title>
        <style type="text/css">
            code {
                color: orange;
            }
            .error {
                color: red;
                font-size: 1.15rem;
            }
        </style>
    </head>
    <body>
        <?php
        if (isset($errorMessage)) {
            // ถ้ามีข้อผิดพลาด
            if (is_string($errorMessage)) {
                // ถ้าข้อผิดพลาดเป็น string
                echo '<p class="error">' . $errorMessage . '</p>' . PHP_EOL;
            } elseif (is_iterable($errorMessage)) {
                // ถ้าข้อผิดพลาดเป็นอะไรที่วนลูปได้
                foreach ($errorMessage as $anErrorMsg) {
                    if (is_string($anErrorMsg)) {
                        echo '<p class="error">' . $anErrorMsg . '</p>' . PHP_EOL;
                    } else {
                        // บ้าแล้ว!! มึงจะยัด error ที่ไม่ใช่ string ไว้ใน array ทำไม? ไอ้บ้า!!!
                        throw new \Exception('There are some crazy error: ' . print_r($anErrorMsg, true));
                        exit();// prevent `try..catch`.
                    }
                }// endforeach;
                unset($anErrorMsg);
            }
            unset($errorMessage);
        } elseif (isset($success) && true === $success) {
            // ถ้าอัปโหลดสำเร็จ.
            if (isset($newFileName)) {
                echo '<img src="./' . $newFileName . '" alt="uploaded image">';
            } else {
                // ถ้าอัปโหลดสำเร็จแต่ไม่มีตัวแปรชื่อไฟล์ใหม่ (อีหยังวะ?)!!
                throw new \Exception('There is no variable `$newFileName`!');
                exit();// prevent `try..catch`.
            }
        }
        unset($newFileName, $success);
        ?> 
    </body>
</html>

upload.php




สุดท้ายแถม
Code (PHP)
<?php


/**
 * Recursive remove folder.
 *
 * @link https://stackoverflow.com/a/11614201/128761 Original source code.
 * @param string $dir
 * @return void
 */
function rrmdir($dir)
{
    if (is_dir($dir)) {
        $objects = scandir($dir);
        foreach ($objects as $object) {
            if ($object != "." && $object != "..") {
                if (filetype($dir . "/" . $object) == "dir") {
                    rrmdir($dir . "/" . $object);
                } else {
                    unlink($dir . "/" . $object);
                }
            }
        }
        reset($objects);
        rmdir($dir);
    }
}// rrmdir


rrmdir(__DIR__ . DIRECTORY_SEPARATOR . 'uploaded');
echo '<p>ลบสำเร็จแล้ว.</p>';

delete.php
Date : 2024-07-16 07:52:00 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การ Upload ไฟล์ เปลี่ยนมาใช้ฟังค์ชั่น move_upload_file แทน copy ดีกว่าครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่