|
|
|
เช็ค type+size มัลติอัพโหลดไม่ผ่านครับ ขอความช่วยเหลือหน่อยครับ |
|
|
|
|
|
|
|
สมมุติว่า ผมอัพ 5 ภาพ ใน 5 ภาพถ้า ผิด 1 ก็ให้ยกเลิกทั้งหมดให้ error ในการผิดแบบนั้นๆๆ รบกวนด้วยครับ
ตอนนนี้ Size type ผ่านแล้ว
|
|
|
|
|
Date :
2013-06-07 21:12:27 |
By :
hackcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
include ("../cndb.php");
$db_conn = connectdb::connect();
$con = new connectdb($db_conn);
?>
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
<script>
function uploadok(pathfile){
alert("เพิ่มสินค้าเรียบร้อย\n รหัสสิ้นค้าคือ"+pathfile);
return true;
}
function over_size(size){
alert("ขนาดไฟล์เกิน 100 KB\n"+size+" KB");
return false;
}
function wrong_type(type){
alert("สกุลไฟล์ผิดประเภท\n"+type);
return false;
}
</script>
</head>
<body>
<?php
$flag = FALSE; $started = FALSE;
$sql = "INSERT INTO files (files_no,prod_id,files_name) VALUES ";
for($i=0;$i<count($_FILES["filUpload"]["name"]);$i++){
if($_FILES["filUpload"]["name"][$i] == ""){
$flag = FALSE; break;
}
if($_FILES["filUpload"]["size"][$i] >= 102400){
?>
<script>
window.parent.over_size("<?php echo ($_FILES["filUpload"]["size"][$i]/1024); ?>");
window.location="productadd.php";
</script><?php
$flag = FALSE; break;
}
$filetype = substr(strrchr(strtolower($_FILES["filUpload"]["name"][$i]),'.'),1);
if(!in_array($filetype,array("jpg","jpeg","png","gif"))){
?>
<script>
window.parent.wrong_type("<?php echo $filetype; ?>");
window.location="productadd.php";
</script><?php
$flag = FALSE; break;
}
$name_new = sprintf("%s-%s",date("Y-m-d"),$_FILES["filUpload"]["name"][$i]);
if(move_uploaded_file($_FILES["filUpload"]["tmp_name"][$i],"../myfile/".$name_new)){
if(!$started){ $sql .= ' '; $started = TRUE; } else $sql .= ' ,';
$sql .= sprintf("('', '%s', '%s')",$prod_id, $name_new);
$flag = TRUE;
}
}
if($flag){
$objDB = mysql_select_db("prayun");
$objQuery = mysql_query($sql);
?><script>window.parent.uploadok("<?php echo $prod_id; ?>");window.location="productadd.php";</script><?
}
?>
</body>
</html>
|
|
|
|
|
Date :
2013-06-07 22:07:31 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมยัง งงกับบรรทัดที่ 57 - 58 อยู่เลยครับ ?? ทุกอย่างได้หมดแต่ไม่ลงเบส ไฟล์รูปไปอยู่ที่ myfile แล้ว
พอไล่อ่านโค๊ดเจอ 57-58 ยังไม่ค่อยเข้าใจ
|
|
|
|
|
Date :
2013-06-07 22:34:39 |
By :
hackcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่อ คือคุณต้องการให้ลง db ก่อนย้ายไฟล์ใช่มั้ยครับ?
|
|
|
|
|
Date :
2013-06-07 22:53:58 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ
|
|
|
|
|
Date :
2013-06-07 22:57:02 |
By :
hackcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือมันเช็คได้หมดแล้วแต่ พอผมอัพไฟล์ถูกต้องไปทั้งหมด มันไม่ลงเบส แต่ ย้ายไฟล์ปกติ
|
|
|
|
|
Date :
2013-06-07 22:58:04 |
By :
hackcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ง่ายๆครับ เปลี่ยน $name_new เป็น $name_new[$i] แล้วใน if($flag){} ก็ลูปให้ move_file เท่านั้นเองครับ
|
|
|
|
|
Date :
2013-06-07 22:58:43 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันยังมี error อยู่ครับ
เช่น ผมอัพไฟล์
101.jpg ปกติ
102.rar ผิดประเภท
103.jpg ปกติ
พอทดสอบการอัพ มันทำการ ย้าย 101.jpg ไปที่ Myfile ของผมได้ปกติ แต่เจอ 102.rar มันจะหยุดทันที 103.jpgก็จะไม่ไป
แต่ว่า มันผิดตรงที่ว่า ในการอัพโหลดหากเจอผิดประเภทหรือขนาดเกิน จะต้องไม่มีการอัพโหลดเลย
และผมยังลง SQL ไม่ได้แก้แล้วยังไงก็ไม่ลงครับ คุณ itpcc ช่วยด้วยครับ
|
|
|
|
|
Date :
2013-06-12 16:40:17 |
By :
hackcode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.เช็คจำนวนไฟล์ที่อัพโหลดเสียก่อน
2.loop ไปตามจำนวนไฟล์พร้อมย้าย ในส่วนนี้ให้เช็คด้วยว่า error หรือไม่
3.ระหว่างย้ายไฟล์ เอาชื่อไฟล์เก็บเข้าไปไว้ใน array โดยอย่าเพิ่ง insert ลง db
4.ถ้าไม่เกิด error ในระหว่างย้ายไฟล์ ให้เอาข้อมูลชื่อไฟล์ที่อยู่ใน array มา insert ลงไปตาม column ของคุณ (จบแบบกรณีปกติ)
5.ถ้าเกิด error บางไฟล์ ก่อนย้ายครบจำนวนที่อัพโหลด ซึ่งจำนวนอัพโหลดได้จาก ข้อ 1 ให้เรา loop ลบไฟล์ตามชื่อ ที่ได้เก็บลงไปใน array ก่อนหน้า ตามข้อ 3 เพราะเราจะไม่ไปสร้าง record ทิ้งไว้ ถ้าไ์ฟล์ที่จะอัพโหลด ไม่สามารถอัพโหลดได้ครบจริงๆ
(จบกรณีแบบ ผิดพลาดระหว่างย้ายไฟล์)
กรณีนี้จะคล้ายกับ sql transaction แต่ไม่จำเป็นต้องใช้ก็ได้
ผมเชื่อว่าคุณเขียนได้ ค่อยๆ เรียบเรียงแนวคิดดีๆ ครับ
|
ประวัติการแก้ไข 2013-06-13 00:03:47
|
|
|
|
Date :
2013-06-12 23:54:55 |
By :
weerayudth |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|