|
|
|
อยากทราบโค้ด Upload ไฟล์ เช่น doc , xls, jpg,gif ตอนนี้ทำโปรแกรมบันทึกเลขที่เอกสารคะ |
|
|
|
|
|
|
|
ตอนนี้ทำโปรแกรมบันทึกเลขที่เอกสารคะ แต่ติดตรงที่ต้อง Upload File ได้
โดยให้ผู้ใช้กรอกข้อมูลต่างๆพร้อมทั้ง Upload File ต่างๆได้
ผู้ใช้สามารถเรียกดู File ที่ตัวเอง Upload ได้
โค้ดข้างล่างนี้ สามารถ Upload File ขึ้น Server ได้คะ
แต่หนูอยากรู้ว่าเราจะเอาไปประยุกต์ใส่ใน Form ของเราอย่างไร
ถ้าหนูเดาไม่ผิดเวลา Upload File เราต้อง save ชื่อไฟล์นั้นลงฐานข้อมูลไว้
แล้วก็สร้างลิงค์ไว้สำหรับให้ผู้ใช้ดึงข้อมูลใช่รึป่าวคะ
รบกวนผู้รู้ช่วยบอกหนูด้วยคะ
ขอบคุณคะ
Code
<FORM Name="uploadfile" ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD="post">
Upload File Server: <INPUT TYPE="file" NAME="userfile"><BR>
<INPUT TYPE="submit" VALUE="Upload"><BR>
</FORM>
Code (PHP)
<?php
$Upload_Dir = "upload/";
$Max_File_Size = 1000000; //กำหนดขนาดไฟล์ที่ใหญ่ที่สุดที่อนุญาตให้ upload มาที่ Server มีหน่วยเป็น byte
$File_Type_Allow = array("application/x-zip-compressed" /*.zip*/,"text/plain" /*.txt*/,"application/msword" /*.doc*/,"application/vnd.ms-excel" /*.xls*/,"application/pdf " /*.pdf*/,"image/bmp" /* .bmp, .ico*/, "image/gif" /* .gif*/, "image/pjpeg" /*.jpg, .jpeg*/, "image/jpeg" /* .jpg, .jpeg*/); //กำหนดประเภทของไฟล์ว่าไฟล์ประเภทใดบ้างที่อนุญาตให้ upload มาที่ Server
function validate_form($file_input,$file_size,$file_type) { //เป็น function ที่เอาไว้ตรวจสอบว่าไฟล์ที่ผู้ใช้ upload ตรงตามเงื่อนไขหรือเปล่า
global $Max_File_Size,$File_Type_Allow;
if ($file_input == "none") {
$error = "ไม่มี file ให้ Upload";
} elseif ($file_size > $Max_File_Size) {
$error = "ขนาดไฟล์ใหญ่กว่า $Max_File_Size ไบต์";
} elseif (!check_type($file_type,$File_Type_Allow)) {
$error = "ไฟล์ประเภทนี้ ไม่อนุญาตให้ Upload";
} else {
$error = false;
}
return $error;
}
function check_type($type_check) { //เป็นฟังก์ชัน ที่ตรวจสอบว่า ไฟล์ที่ upload อยู่ในประเภทที่อนุญาตหรือเปล่า
global $File_Type_Allow;
for ($i=0;$i<count($File_Type_Allow);$i++) {
if ($File_Type_Allow[$i] == $type_check) {
return true; }
}
return false;
}
$error_msg = validate_form($userfile,$userfile_size,$userfile_type); // ตรวจดูว่า ไฟล์ที่ upload ตรงตามเงื่อนไขหรือเปล่า
if ($error_msg) {
echo $error_msg;
} else {
if (copy($userfile,$Upload_Dir."/$userfile_name")) { //ทำการ copy ไฟล์มาที่ Server
echo "ไฟล์ Upload " . $Upload_Dir . " เรียบร้อย";
} else {
echo "ไฟล์ Upload มีปัญหา";
}
}
?>
Tag : - - - -
|
|
|
|
|
|
Date :
2009-02-26 17:45:17 |
By :
bawaki |
View :
7569 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถูกต้องคับ คือเราต้องเก็บชื่อของไฟล์นั้นไว้ในฟอร์มของเอกสารที่เราจะบันทึกอยู่ด้วย ไม่งั้นจะไม่รู้ว่าไฟล์นี้ของอันไหน
ซึ่งชื่อไฟล์ถ้าเราใช้ชื่อต้นฉบับเลยก็จะต้องตัวแปร $_FILES["file"]["name"] อันนี้ เช่นไฟล์ชื่อ document.doc ดังนั้น $_FILES["file"]["name"] = document.doc
ปกติแล้วผมจะทำ 2 แบบคือ แบบที่อัพโหลดไปพร้อมกับบันทึกค่าฟอร์มเลย คือจะให้โปรแกรมมัน บันทึกไฟล์ลงเซิฟเวอร์ก่อน แล้ว ค่อย Insert ข้อมูลที่เหลือที่มาจากฟอร์มทีหลัง ซึ่งก็จะบันทึกชื่อไฟล์ที่อัพโหลดไปด้วยพร้อมกัน
แบบที่ 2 ผมจะสร้าง textinput มาอันนึง แล้วสร้างปุ่มกดเพื่อเรียกหน้าที่ทำไว้อัพโฆลดโดยเฉพาะมาเพื่ออัพโหลดไฟล์ไปก่อน แล้วใช้ javascript ส่งชื่อไฟล์กลับมายัง textinput ที่กำหนดไว้ในฟอร์มหลัก เวลาบันทึกก็รับค่าจากฟอร์มต่างๆไปบันทึกได้เลย วิธีหลังนี้มันจะเสียตรงที่ถ้าอัพโหลดไฟล์ไปแล้ว ไม่ได้กด submit form ไฟล์ที่อัพโหลดไปก็ไม่มีข้อมูลที่จะชี้ไปหามัน แต่ที่ผมใช้แบบนี้เพราะว่ามันสามารถทำให้อัพโหลดได้หลายๆไฟล์ในการเก็บข้อมูลชุดเดียว
และสุดท้าย คือชื่อไฟล์ ผมจะไม่เก็บแค่ชื่อไฟล์เช่น document.doc อย่างเดียว เพราะเวลาเขียนหน้าแสดงผลเราต้องระบุพาร์ทที่อยู่มันอีกที เพื่อไม่ให้เกิดความผิดพลาด ผมเลยใส่พาร์ทมันไปด้วยเลยเช่น http://localhost/site/uploads/document.doc เวลาเรียกแสดงผลก็จะได้ echo มันออกมาได้เลย ไม่ต้องระบุก่อนว่าพาร์ทที่เก็บไฟล์อยู่ที่ http://localhost/site/uploads/
ผิดพลาดประการใดขออภัยด้วยคับ มือใหม่...แหะๆ
|
|
|
|
|
Date :
2009-02-26 19:14:33 |
By :
zankumuro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคะ
|
|
|
|
|
Date :
2009-03-04 11:02:27 |
By :
bawaki |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณ Yoshikuni Masato ครับ คือผมกำลังทำเรื่องนี้อยู่พอดี ไม่ทราบว่าคุณสามารถแบ่งปันโค๊ดให้ผมนำไปศึกษาต่อจะได้ไหมครับ
|
|
|
|
|
Date :
2012-11-13 10:53:36 |
By :
chairat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|