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>
ปกติแล้วสิทธ์ในการลบไฟล์จะเท่ากับสิทธิ์ในการเขียนไฟล์ ดังนั้น ถ้าลบได้ก็ต้อง้ขียนได้
และ โดยปกติแล้ว เราไม่จำเป็นต้องลบไฟล์เดิมก่อน ถ้าไฟล์ใหม่มีชื่อเดียวกับไฟล์เก่าไฟล์เก่าจะถูกแทนที่ด้วยไฟล์ใหม่โดยอัตโนมัติ
ปัญหาที่คาดว่าอาจจะเป็นไปได้
ไฟล์ที่อยู่บน Server เดิม เป็นแบบ Readonly คำสั่งลบไฟล์ อาจไม่ได้ลบไฟล์ออกไปจริงๆ เพียงแต่การลบ ไม่ได้แสดง Error เมื่อไฟล์ไม่ได้ถูกลบออก ก็อาจทำให้ไม่สามารถอัปโหลดไฟล์ใหม่ได้ ซึ่งอาจไม่แสดง Error เช่นเดียวกัน
ปัญหาอื่นๆ เช่น
ชื่อไฟล์ใหม่ และ เก่าอาจไม่ตรงกัน 100% เช่น ตัวอักษรพิมพ์ใหญ่และเล็ก Server ที่เป็น Linux จะมองว่าเป็นคนละไฟล์อาจทำให้หากันไม่เจอได้
อีกเรื่องคือการใช้ name ในการอัปโหลด ถ้าชื่อไฟล์ที่อัปโหลดเป็นภาษาไทยก็อาจทำให้หาไฟล์ไม่เจอได้ครับ
หรือ ถ้ามั่นใจว่าลบไฟล์ได้จริง และไฟล์นั้นไม่ใช่ readonly และ ไฟล์ใหม่จะมีชื่อเดียวกับไฟล์เดิมเสมอ ทดลองอัปโหลดโดยไม่ต้องลบของเดิมดูครับ
อื่นๆ ก็เขียนโค้ดอัปโหลดไม่ถูกต้อง เช่น ระบุ Path ปลายทางไม่ถูกต้อง ลองใช้ Path แบบเต็มๆ โดยดูจาก ftp ครับ
ค่ะ แต่ตอนนี้ เปลี่ยนสิทธิ์แล้ว ตอนแรกมันเป็น 777 แต่หลังจากนั้นก็ กลายเป็น XXX มันเป็นไรค่ะ เปลี่ยนกี่ทีก็กลายเป็น XXX ทุกทีเลยค่ะ เกิดจากอะไรคะ
บาง โปรแกรม ftp จะทำการ backup ค่าเดิมของ ftp ไว้ เช่น filezilla เพื่อการ restore แต่จริงๆแล้วไฟล์ถูฏ chmod ไปแล้วครับ
ถ้ากังวล ให้ลองระบุตัวเลขที่ต้องการลงไปตรงๆแทนการเลือกครับ (หรือลองใช้โปรแกรมอื่น หรือ อาจใช้ CP ของ Server ในการจัดการ)