upload ไฟล์ให้ไฟล์เก่าโดนลบทิ้ง แล้ว อัพไฟล์ใหม่ ขึ้นไปค่ะ

คือว่า ต้องการให้ user อัพโหลดไฟล์ทับ ไฟล์เก่าค่ะ โดยตัว user จะมีไฟล์อยู่แล้ว แต่เค้าต้องอัพไฟล์ใหม่ทุกวัน ต้องการให้ ไฟล์เดิมโดนลบทิ้งตอนเค้าอัพ แล้วไฟล์ใหม่ไปแทนที่อะค่ะ ตอนนี้ทำได้แค่ลบไฟล์เดิมแค่ แต่ ว่า มันไม่ยอม อัพไฟล์ใหม่ ค่ะ รบกวนพี่ๆหน่อยนะคะ รบขอดูโค้ดให้หน่อย หรือว่า มีข้อเสนอแนะอะไรก็ได้ค่ะ ขอบคุณค่ะ 



อันนี้โค้ดค่ะ 




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?
include("connect.php");
$id=addslashes($_GET['ID']);
$strSQL = "SELECT * FROM sales ";
$strSQL .= "WHERE id ='".$id."' ";
    $objQuery = mysql_query($strSQL) or die (mysql_error());
    $objResult = mysql_fetch_array($objQuery);
    if($objResult){
        if($objResult["dailyreport"]!=""){
            @unlink("file/".$objResult["dailyreport"]);
        }
copy($_FILES["fileUpload"]["tmp_name"],"../sales/file/".$_FILES["fileUpload"]["name"]);
$upSQL = "UPDATE FROM sales SET dailyreport = '".$_FILES["fileUpload"]["name"]."' ";
$upSQL .="WHERE id = '".$id."' ";
$objQuery = mysql_query($upSQL);
}
if($objQuery)
{
echo "<script language = 'javascript'>alert('อัพโหลดข้อมูลเรียบร้อยแล้วค่ะ');</script>";
echo "<script language = 'javascript'>history.go(-1);</script>";
}
else{
echo "<script language = 'javascript'>alert('ไม่สามารถอัพโหลดข้อมูลได้ค่ะ');</script>";
echo "<script language = 'javascript'>history.go(-1);</script>";
}
mysql_close();
?>


</body>
</html>

14 มี.ค. 2554 7 2,993

เป็นไปไม่ได้ครับ



ปกติแล้วสิทธ์ในการลบไฟล์จะเท่ากับสิทธิ์ในการเขียนไฟล์ ดังนั้น ถ้าลบได้ก็ต้อง้ขียนได้



และ โดยปกติแล้ว เราไม่จำเป็นต้องลบไฟล์เดิมก่อน ถ้าไฟล์ใหม่มีชื่อเดียวกับไฟล์เก่าไฟล์เก่าจะถูกแทนที่ด้วยไฟล์ใหม่โดยอัตโนมัติ



ปัญหาที่คาดว่าอาจจะเป็นไปได้



ไฟล์ที่อยู่บน Server เดิม เป็นแบบ Readonly คำสั่งลบไฟล์ อาจไม่ได้ลบไฟล์ออกไปจริงๆ เพียงแต่การลบ ไม่ได้แสดง Error เมื่อไฟล์ไม่ได้ถูกลบออก ก็อาจทำให้ไม่สามารถอัปโหลดไฟล์ใหม่ได้ ซึ่งอาจไม่แสดง Error เช่นเดียวกัน



ปัญหาอื่นๆ เช่น



ชื่อไฟล์ใหม่ และ เก่าอาจไม่ตรงกัน 100% เช่น ตัวอักษรพิมพ์ใหญ่และเล็ก Server ที่เป็น Linux จะมองว่าเป็นคนละไฟล์อาจทำให้หากันไม่เจอได้



อีกเรื่องคือการใช้ name ในการอัปโหลด ถ้าชื่อไฟล์ที่อัปโหลดเป็นภาษาไทยก็อาจทำให้หาไฟล์ไม่เจอได้ครับ
#1

ไฟล์โดนลบไปจริงค่ะ แต่เมื่อลบแล้ว มันให้อัพโหลดไม่ได้ค่ะ เหอๆ งง เหมือนกัน ค่ะ แล้ว โค้ดเขียนถูกแล้วไหมคะ ส่วนสิทธิ์การเข้าถึง ก็เป็น 777 แล้วอะค่ะ ขอบคุณอาจารย์มากๆนะคะสำหรับคำตอบ จะพยายามดูอีกทีค่ะ 
#2

ลองตรวจสอบโฟลเดอร์ที่เก็บไฟล์ครับ ควรเป็น 646 เป็นอย่างน้อย หรือไม่ก็เป้น 777



หรือ ถ้ามั่นใจว่าลบไฟล์ได้จริง และไฟล์นั้นไม่ใช่ readonly และ ไฟล์ใหม่จะมีชื่อเดียวกับไฟล์เดิมเสมอ ทดลองอัปโหลดโดยไม่ต้องลบของเดิมดูครับ



อื่นๆ ก็เขียนโค้ดอัปโหลดไม่ถูกต้อง เช่น ระบุ Path ปลายทางไม่ถูกต้อง ลองใช้ Path แบบเต็มๆ โดยดูจาก ftp ครับ
#3

ลืมบอกไป ก่อนการอัปโหลดควรตรวจสอบไฟล์ก่อนก็ดีนะ ป้องกันการอัปโหลดไวรัส
#4

ขอบคุณอาจารย์มากนะคะสำหรับคำแนะนำ 



ค่ะ แต่ตอนนี้ เปลี่ยนสิทธิ์แล้ว ตอนแรกมันเป็น 777 แต่หลังจากนั้นก็ กลายเป็น XXX มันเป็นไรค่ะ เปลี่ยนกี่ทีก็กลายเป็น XXX ทุกทีเลยค่ะ เกิดจากอะไรคะ  
#5

เปลี่ยนที่ไหนเอ่ย



บาง โปรแกรม ftp จะทำการ backup ค่าเดิมของ ftp ไว้ เช่น filezilla เพื่อการ restore แต่จริงๆแล้วไฟล์ถูฏ chmod ไปแล้วครับ



ถ้ากังวล ให้ลองระบุตัวเลขที่ต้องการลงไปตรงๆแทนการเลือกครับ (หรือลองใช้โปรแกรมอื่น หรือ อาจใช้ CP ของ Server ในการจัดการ)
#6

อ่อ ขอบคุณแต่ แต่ว่า เรื่องอัพโหลดยังไม่ได้ค่ะ แหะๆ ขอบคุณสำหรับคำแนะนำมากๆนะคะอาจารย์
#7
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^