ต้องการให้ขึ้น Alert หากอัพโหลดไฟล์ผิด หรือ ขนาดไฟล์เกิน

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ต้องการให้ขึ้น Alert หากอัพโหลดไฟล์ผิด หรือ ขนาดไฟล์เกิน

ต้องการให้ขึ้น Alert หากอัพโหลดไฟล์ผิด หรือ ขนาดไฟล์เกิน


อันนี้หน้าฟอร์ม

<form  action="savedata.php" method="post" enctype="multipart/form-data" name="form1" id="form1" onSubmit="JavaScript:return fncSubmit();">
  <table cellspacing="0">
    <tr>
      <td>วันที่ : </td>
	  <td><input name="date" type="text" size = "10"/>
      <a href="javascript:displayDatePicker('date')"><img border="0" src="Calendar-icon.jpg" width="20" height="20"></a></td>
      <td> สาขา : </td>
      <td width="200"><select name="branch"  id="branch">
          <option value="U2" > U2 </option>
          <option value="U3" > U3 </option>
          <option value="U4" > U4 </option>
          </select>	 </td>    
      <td> User : </td>
      <td ><input name="name_user" type="text" size = "10"/></td>
    </tr>
  <td> เลขที่ Memo : </td>
      <td><input name="no_memo" type="text" size = "10" id="no_memo"/></td>
	  <td></td>
	  <td></td>
    <td > Admin : </td>
    <td><input name="name_admin" type="text" size = "10"/></td>
  <tr></tr>
  </table>
<table>
	<tr> Method </tr>
	<td><input name="show" type="radio" value="1" onclick="show_table(this.value);" id="add">Add</td> 
	<td><input name="show" type="radio" value="2" onclick="show_table(this.value);" id="del"> Delete </td>
	<td><input name="show" type="radio" value="3" onclick="show_table(this.value);" id="tranfer"> Tranfer</td> 
</table>

<table border="0" cellpadding="0"  id="opt2" style="display:none"> 
<tr>
<td>Option</td>
</tr>
</table>

<table border="0" cellpadding="0"  id="stk1" style="display:none"> 
<tr>
<td><label><input name="option11" type="radio" value="stk" id="stk"/>Stock</label></td>
</tr>
</table>


<table border="0" cellpadding="0"  id="tranferboi" style="display:none"> 
<tr>
<td><label><input name="option11" type="radio" value="scrapboi" id="scrapboi" />Tranfer To Scrap BOI</label></td>
</tr>
</table>

<table border="0" cellpadding="0"  id="tranfernonboi" style="display:none"> 
<tr>
<td><label><input name="option11" type="radio" value="scrapnonboi"  id="scrapnonboi"/>Tranfer To Scrap NON-BOI</label></td>
</tr>
</table>
  <table>
  			<td>เอกสารแนบไฟล์</td>
  		  <td><input name="filepdf1" type="file"  id="filepdf1"/></td>
  </table>
  <table>
  		<td><input name="save" type="Submit" value="บันทึกข้อมูล" id="save" /></td>
  </table>
</form>
</body>
</html>

อันนี้หน้า Save
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">
function clickupload()
{

if(document.form1.filepdf1.value.length==0)
alert("Please select file to upload");
return false;
}
alert("Now uploading please wait");
document.form1.save.disabled=true;
return true;
}

function uploadok(pathfile)
{
document.form1.filepdf1.style.display="none";
document.form1.save.style.display="none";
alert("Upload Complete
"+pathfile);
return true;
}
function over_size(size)
{
alert("File not over 800 KB
"+size+" KB");
reset_file("filepdf1");
document.form1.save.disabled=false;
return false;
}
function wrong_type(type)
{
alert("Please upload only file type .pdf !!"+type);
reset_file("filepdf1");
document.form1.save.disabled=false;.
return false;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>บันทึกข้อมูล</title>
</head>

<body>
<?
	sleep(3);  
$nomemo = $_FILES['filepdf1']['no_memo'];
$file = $_FILES['filepdf1']['name'];  
$typefile = $_FILES['filepdf1']['type'];   
$sizefile = $_FILES['filepdf1']['size'];  
	if($sizefile>204800)
	{
?>
<script>
window.parent.over_size("<?php echo $sizefile/1024?>");
</script>
<?
$folder="filepdf/";  // กำหนดโฟลเดอร์ที่จะเก็บ 
//$tempfile = $folder.$_POST.$date("Y-m-d").".pdf";
}
elseif (($type==".pdf"))
{ 
$tempfile = $folder.$_POST['no_memo'].".pdf".$type;  // เก็บไฟล์ไว้ที่ โฟลเดอร์ filepdf และเปลี่ยนชื่อไฟล์ตามที่ได้รับค่ามาจาก textbox
$tempfile1= $_POST['no_memo'].".pdf".$type; // เก็บชื่อไฟล์ลงฐานข้อมูล
    
copy($_FILES['filepdf1']['tmp_name'],$tempfile);	
?>
<script>
window.parent.uploadok("<? echo $tempfile1?>");
</script>
<?php
}
else
{
?>
<script>
window.parent.wrong_type("<? echo $_FILES["filepdf1"]["type"]?>");
</script>
<?
}
?>
<?
///////////////////////////////////////////////// Connect DB /////////////////////////////////////////////////////////
	$host = "localhost";
	$user = "root";
	$pass = "1234";
	$dbname = "find_memo";
	$tblname = "find_memo01";
	
	$dbcon = mysql_connect($host,$user,$pass) or die ("Connect Database");
	mysql_select_db ($dbname,$dbcon);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	$no_memo = $_POST[no_memo];
	$branch =  $_POST[branch];
	$date = $_POST[date];
	$name_user = $_POST[name_user];
	$name_admin = $_POST[name_admin];
	$show = $_POST[show];
	$option11 = $_POST[option11];
	$filepdf1 = $_POST[filepdf1];
	
	$sql = "insert into $tblname (memo_01,memo_02,memo_03,memo_04,memo_05,memo_06,memo_07,memo_08) values ('$no_memo','$branch','$date','$name_user','$name_admin','$show','$option11','$tempfile1')";
		echo "$sql";
	$result = mysql_query($sql); 
	if($result)
	 {
   echo "บันทึกสำเร็จ !";
	 }
	else
 	{
  	echo "บันทึกไม่สำเร็จ !";
	}

	mysql_close($dbcon);
?>




</body>
</html>


Kawakwang 61.90.149.xxx 25-03-2015 10:16:46

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
จากโค้ด หน้า Save ไม่แน่ใจว่ามีตรงไหนผิดหรือป่าว เพราะไม่ขึ้น Alert อะไรเลย แถมไฟล์ pdf ก็ไม่สามารถเซฟในโฟลเดอร์ได้ 

ได้นำโค้ดจาก http://www.thaicreate.com/community/php-check-size-type-before-upload.html มาประยุกต์ใช้ 



kawakwang 61.90.149.xxx 25-03-2015 10:20
 ความคิดเห็นที่ 2
โค้ดดูงง ไปหน่อย ลองดูจากนี้เป็นแนวทาง

เทคนิค ประยุกต์ใช้ ajax ใน jQuery ร่วมกับ iframe กับการอัพโหลดรูป 
https://www.ninenik.com/content.php?arti_id=306 via @ninenik

หรือ รอติดตามบทความประยุกต์เฉพาะการอัพโหลดไฟล์ ผ่าน iframe 


ninenik 171.96.39.xxx 25-03-2015
 ความคิดเห็นที่ 3
อัพโหลด และตรวจสอบไฟล์ พร้อม ส่งค่าข้อมูล form ผ่าน iframe 


ninenik 171.96.39.xxx 25-03-2015
 ความคิดเห็นที่ 4
ขอบคุณค่ะ สามารถเอาไปประยุกต์ใช้ตามที่ให้แนวทางมาได้แล้วค่ะ  แต่คือติดตรงตัวไฟล์ pdf ที่จะเก็บไว้ในโฟลเดอร์ มันไม่เก็บให้ ไม่ทราบว่าต้องเพิ่ม หรือแก้ไข โค้ดตรงช่วงประมานไหนคะ


kawakwang 61.90.149.xxx 25-03-2015 18:51
 ความคิดเห็นที่ 5
ไล่ดูตามโค้ตตัวอย่างได้เลย ไม่มีอะไรซับซ้อน แค่ระบุโฟลเดอร์ที่ต้องการเก็บไฟล์ นอกนั้นคงต้องดูเอง


ninenik 1.47.37.xxx 25-03-2015
 ความคิดเห็นที่ 6
ขอถามอีกนิดค่ะ ทำไมชื่อไฟล์มันแสดงในฐานข้อมูลว่า Array อ่ะคะ (ตอนนี้เก็บไฟล์ pdf ใน โฟลเดอร์ได้แล้ว)

<?
//  function up file
function upfile_only($file,$filelocate,$limit_size=2000000){  
    $allowed_types=array("pdf");     
    $error_msg="";
    $status=0;
    $arr_file_up=array();
    if($file["name"]!=""){  
        $fileupload1=$file["tmp_name"];  
        $g_file=explode(".",$file["name"]);  
		// explode คือเราจะใช้ก็ต่อเมื่อ เราต้องการที่จะแยกสัญลักษณ์ต่างๆ ออกจากข้อความตามที่เราต้องการและจะแบ่งข้อความนั้นเก็บไว้ในตัวแปลอาร์เรย์ เช่น เราต้องการแสดง 20/พฤศจิกายน/2550 เป็น วันที่ 20 เดือน พฤศจิกายน พ.ศ.2550 เราก็จะสามารถนำฟังชั่นนี้มาประยุกต์ใช้งานได้
        $ext = strtolower(array_pop($g_file));  // strtolower เปลี่ยนตัวอักษรในสตริงเป็นตัวอักษรเล็ก
		$folder="filepdf/";   
		$tempfile = $folder.$_POST['no_memo'].".pdf".$type; 
        $tempfile1= $_POST['no_memo'].".pdf".$type;   // กำหนดรุปแบบชื่อไฟล์
		
		copy($_FILES['filepdf1']['tmp_name'],$tempfile);	
		
        $unitFile="";
        $textFileSize="";
        if($limit_size>=1000000){
            $textFileSize=round($limit_size/1000000, 0);
            $unitFile="MB";
        }elseif($limit_size>=1000){
            $textFileSize=round($limit_size/1000, 0);
            $unitFile="KB";
        }else{
            $textFileSize=round($limit_size, 0);
            $unitFile="Byte";
        }
//        echo $textFileSize." ".$unitFile;
        $canUpload=0;  
        if($file["size"]<=$limit_size){                 
            $canUpload=1;    
            if(@in_array($ext,$allowed_types)){
                $canUpload=1;    
                if($fileupload1!="" && $canUpload==1){  
                    $status=1;
                    @copy($fileupload1,$filelocate.$file_up);  
                    @chmod($filelocate.$file_up,0777);    
                    $error_msg="";
                }else{  
                    $status=2;
                    $file_up="";     
                    $error_msg="เกิดข้อผิดพลาด กรุณาลองใหม่ อีกครั้ง";
                }                  
            }else{
                $status=3;
                $canUpload=0;  
                $file_allowed_types = implode(",", $allowed_types);
                $error_msg="อนุญาตอัพโหลดเฉพาะไฟล์ $file_allowed_types เท่านั้น";            
            }            
        }else{
            $status=4;
            $canUpload=0;  
            $error_msg="ขนาดไฟล์ต้องไม่เกิน $textFileSize $unitFile";
        }
    }else{
        $status=5;
        $error_msg="กรุณาเลือกไฟล์ที่ต้องการอัพโหลด";
    }
    $arr_file_up['error']=$error_msg;    
    $arr_file_up['name']=$file_up;
    $arr_file_up['size']=$file["size"];
    $arr_file_up['status']=$status;
    return $arr_file_up; // ส่งกลับ array ข้อมูล
}  

///////////////////
if(isset($_POST['save'])){
    // การใช้งานฟังก์ชั่น สำหรับ upfile แบบกำหนดเงื่อนไข
    //$UpFile=upfile_only(ชื่อ fileupload,โฟลเดอร์ที่ต้องการเก็บ,ขนาดไฟล์ 1000=1kb);
	//$tempfile1= $_POST['no_memo'].".pdf".$type; // เก็บชื่อไฟล์ลงฐานข้อมูล
	
    $UpFile=upfile_only($_FILES['filepdf1'],"filepdf/",500000);
	
    // $UpFile จะรับค่า array ที่ได้จากการใช้งานฟังก์ชั่น 
    // เราสามารถเอาค่าที่ได้ไปตรวจสอบหรือทำงานส่วนอื่นต่อได้
    // $UpFile['name'] // ชื่อไฟล์
    // $UpFile['error'] // ข้อความแจ้ง ถ้าไม่มี error ค่าจะเป็นว่าง
    // $UpFile['status'] // สถานะต่างๆ เป็นตัวเลข 1-5 โดย 1 คือ อัพโหลดสมบูรณ์ 
    // $UpFile['size'] // ขนาดของไฟล์ byte
//    echo "<pre>";
//    print_r($UpFile);
//    echo "</pre>";
    $total_status=0;

    // ถ้าอัพเดทข้อมูลอื่นๆ เช่น เพิ่มข้อมูลลงฐานข้อมูลสำเร็จให้กำหนดค่า
    //    $total_status=1;
    if($UpFile['status']==1){  // ถ้าอัพไฟล์สำเร็จ
        // ทำงานคำสั่งอื่น เช่น การบันทึกลงฐานข้อมูล
        $total_status=1;    
    }
    ?>
    <script type="text/javascript">
//    ส่งค่ากลับไปที่ เพจหลัก
    parent.checkUpload('<?=$UpFile['name']?>'
                       ,'<?=$UpFile['error']?>'
                       ,'<?=$UpFile['status']?>'
                       ,'<?=$UpFile['size']?>'
                       ,'<?=$total_status?>');
    </script>    
    <?php
}
?>

<?
///////////////////////////////////////////////// Connect DB /////////////////////////////////////////////////////////
	$host = "localhost";
	$user = "root";
	$pass = "1234";
	$dbname = "find_memo";
	$tblname = "find_memo01";
	
	$dbcon = mysql_connect($host,$user,$pass) or die ("Connect Database");
	mysql_select_db ($dbname,$dbcon);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	$no_memo = $_POST[no_memo];
	$branch =  $_POST[branch];
	$date = $_POST[date];
	$name_user = $_POST[name_user];
	$name_admin = $_POST[name_admin];
	$show = $_POST[show];
	$option11 = $_POST[option11];
	
	$sql = "insert into $tblname (memo_01,memo_02,memo_03,memo_04,memo_05,memo_06,memo_07,memo_08) values ('$no_memo','$branch','$date','$name_user','$name_admin','$show','$option11','$UpFile')";
		echo "$sql";
	$result = mysql_query($sql); 
	

	mysql_close($dbcon);
?>




kawakwang 61.90.149.xxx 26-03-2015 10:19
 ความคิดเห็นที่ 7
ค่าที่ได้จากฟังก์ชั่น จะเป็น array ดังนั้น ก่อนเอาไปใช้เราต้องระบุว่าจะใช้ค่าไหน
 
  $sql = "insert into $tblname (memo_01,memo_02,memo_03,memo_04,memo_05,memo_06,memo_07,memo_08) values ('$no_memo','$branch','$date','$name_user','$name_admin','$show','$option11','$UpFile')";  
 
$UpFile  ยังเป็น array อยู่ ถ้าจะบันทึกชื่อไฟล์ต้องใช้ค่า 
$UpFile['name'] แทน $UpFile
 
  $sql = "insert into $tblname (memo_01,memo_02,memo_03,memo_04,memo_05,memo_06,memo_07,memo_08) values ('$no_memo','$branch','$date','$name_user','$name_admin','$show','$option11','".$UpFile['name']."')";  
 
อักส่วน โค้ดฟังก์ชั่น มีส่วนที่ใช้ในการ อัพโหลดไฟล์อยู่แล้ว
แต่โค้ดที่เราทำ มีการเพิ่มค่าซ้ำ และมีการตัดการกำหนดชื่อไฟล์ออก
น่าจะแก้ไขผิดรูปแบบ  ดูโค้ดนี้เป็นแนวทาง

<?
//  function up file
function upfile_only($file,$filelocate,$limit_size=2000000){  
    $allowed_types=array("pdf");     
    $error_msg="";
    $status=0;
    $arr_file_up=array();
    if($file["name"]!=""){  
        $fileupload1=$file["tmp_name"];  
        $g_file=explode(".",$file["name"]);  
		// explode คือเราจะใช้ก็ต่อเมื่อ เราต้องการที่จะแยกสัญลักษณ์ต่างๆ ออกจากข้อความตามที่เราต้องการและจะแบ่งข้อความนั้นเก็บไว้ในตัวแปลอาร์เรย์ เช่น เราต้องการแสดง 20/พฤศจิกายน/2550 เป็น วันที่ 20 เดือน พฤศจิกายน พ.ศ.2550 เราก็จะสามารถนำฟังชั่นนี้มาประยุกต์ใช้งานได้
        $ext = strtolower(array_pop($g_file));  // strtolower เปลี่ยนตัวอักษรในสตริงเป็นตัวอักษรเล็ก
        
//		$folder="filepdf/";   
//		$tempfile = $folder.$_POST['no_memo'].".pdf".$type; 
//        $tempfile1= $_POST['no_memo'].".pdf".$type;   // กำหนดรุปแบบชื่อไฟล์
//		
//		copy($_FILES['filepdf1']['tmp_name'],$tempfile);	
        
		$file_up=$_POST['no_memo'].".".$ext;   // กำหนดรุปแบบชื่อไฟล์  
        
        $unitFile="";
        $textFileSize="";
        if($limit_size>=1000000){
            $textFileSize=round($limit_size/1000000, 0);
            $unitFile="MB";
        }elseif($limit_size>=1000){
            $textFileSize=round($limit_size/1000, 0);
            $unitFile="KB";
        }else{
            $textFileSize=round($limit_size, 0);
            $unitFile="Byte";
        }
//        echo $textFileSize." ".$unitFile;
        $canUpload=0;  
        if($file["size"]<=$limit_size){                 
            $canUpload=1;    
            if(@in_array($ext,$allowed_types)){
                $canUpload=1;    
                if($fileupload1!="" && $canUpload==1){  
                    $status=1;
                    @copy($fileupload1,$filelocate.$file_up);  
                    @chmod($filelocate.$file_up,0777);    
                    $error_msg="";
                }else{  
                    $status=2;
                    $file_up="";     
                    $error_msg="เกิดข้อผิดพลาด กรุณาลองใหม่ อีกครั้ง";
                }                  
            }else{
                $status=3;
                $canUpload=0;  
                $file_allowed_types = implode(",", $allowed_types);
                $error_msg="อนุญาตอัพโหลดเฉพาะไฟล์ $file_allowed_types เท่านั้น";            
            }            
        }else{
            $status=4;
            $canUpload=0;  
            $error_msg="ขนาดไฟล์ต้องไม่เกิน $textFileSize $unitFile";
        }
    }else{
        $status=5;
        $error_msg="กรุณาเลือกไฟล์ที่ต้องการอัพโหลด";
    }
    $arr_file_up['error']=$error_msg;    
    $arr_file_up['name']=$file_up;
    $arr_file_up['size']=$file["size"];
    $arr_file_up['status']=$status;
    return $arr_file_up; // ส่งกลับ array ข้อมูล
}  


>>>  อัพเดท >>> 26-03-2015
------------------------------------------
ลืมไปว่าใน ฟังก์ชั่น จะใช้ตัวแปร โดยที่ไม่ส่งเข้าไป ไม่ได้ ต้องผ่านตัวแปรรับค่า

//  function up file
//  function up file
function upfile_only($file,$filelocate,$new_name,$limit_size=2000000){  
    $allowed_types=array("pdf");     
    $error_msg="";
    $status=0;
    $arr_file_up=array();
    if($file["name"]!=""){  
        $fileupload1=$file["tmp_name"];  
        $g_file=explode(".",$file["name"]);  
		// explode คือเราจะใช้ก็ต่อเมื่อ เราต้องการที่จะแยกสัญลักษณ์ต่างๆ ออกจากข้อความตามที่เราต้องการและจะแบ่งข้อความนั้นเก็บไว้ในตัวแปลอาร์เรย์ เช่น เราต้องการแสดง 20/พฤศจิกายน/2550 เป็น วันที่ 20 เดือน พฤศจิกายน พ.ศ.2550 เราก็จะสามารถนำฟังชั่นนี้มาประยุกต์ใช้งานได้
        $ext = strtolower(array_pop($g_file));  // strtolower เปลี่ยนตัวอักษรในสตริงเป็นตัวอักษรเล็ก
        
//		$folder="filepdf/";   
//		$tempfile = $folder.$_POST['no_memo'].".pdf".$type; 
//        $tempfile1= $_POST['no_memo'].".pdf".$type;   // กำหนดรุปแบบชื่อไฟล์
//		
//		copy($_FILES['filepdf1']['tmp_name'],$tempfile);	
        
		$file_up=$new_name.".".$ext;   // กำหนดรุปแบบชื่อไฟล์  
        
        $unitFile="";
        $textFileSize="";
        if($limit_size>=1000000){
            $textFileSize=round($limit_size/1000000, 0);
            $unitFile="MB";
        }elseif($limit_size>=1000){
            $textFileSize=round($limit_size/1000, 0);
            $unitFile="KB";
        }else{
            $textFileSize=round($limit_size, 0);
            $unitFile="Byte";
        }
//        echo $textFileSize." ".$unitFile;
        $canUpload=0;  
        if($file["size"]<=$limit_size){                 
            $canUpload=1;    
            if(@in_array($ext,$allowed_types)){
                $canUpload=1;    
                if($fileupload1!="" && $canUpload==1){  
                    $status=1;
                    @copy($fileupload1,$filelocate.$file_up);  
                    @chmod($filelocate.$file_up,0777);    
                    $error_msg="";
                }else{  
                    $status=2;
                    $file_up="";     
                    $error_msg="เกิดข้อผิดพลาด กรุณาลองใหม่ อีกครั้ง";
                }                  
            }else{
                $status=3;
                $canUpload=0;  
                $file_allowed_types = implode(",", $allowed_types);
                $error_msg="อนุญาตอัพโหลดเฉพาะไฟล์ $file_allowed_types เท่านั้น";            
            }            
        }else{
            $status=4;
            $canUpload=0;  
            $error_msg="ขนาดไฟล์ต้องไม่เกิน $textFileSize $unitFile";
        }
    }else{
        $status=5;
        $error_msg="กรุณาเลือกไฟล์ที่ต้องการอัพโหลด";
    }
    $arr_file_up['error']=$error_msg;    
    $arr_file_up['name']=$file_up;
    $arr_file_up['size']=$file["size"];
    $arr_file_up['status']=$status;
    return $arr_file_up; // ส่งกลับ array ข้อมูล
}  

ส่วนตอนเรียกใช้เปลี่ยนเป็น

$UpFile=upfile_only($_FILES['filepdf1'],"filepdf/",$_POST['no_memo'],500000);  


ninenik 171.96.39.xxx 26-03-2015
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ