Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ดาวน์โหลดพวก .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar แล้วใช้งานไม่ได้



 

ดาวน์โหลดพวก .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar แล้วใช้งานไม่ได้

 



Topic : 120444



โพสกระทู้ ( 79 )
บทความ ( 0 )



สถานะออฟไลน์




ดาวน์โหลดพวก .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar แล้วใช้งานไม่ได้

มันจะแจ้งว่า เช่น รูปภาพ=ภาพไม่ถูกต้อง และ ไฟล์.docx=ไม่สามารถเปิดได้เนื่องจากมีปัญหากับเนื้อหา ประมาณนี้

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

ไม่รู้ว่ามีปัญหากับโค้ดที่อัพโหลดไปหาป่าว ส่วนโค้ดที่อัพโหลดเป็นแบบนี้
Code (อัพโหลด)
<?php 
include "class.resizepic.php";
$db = new mysqli("localhost", "root", "123456", "dbboard");
if(mysqli_connect_errno()) die("Connect Failed! :" . mysqli_connect_error());
$db->set_charset('utf8');

if(isset($_POST['Submit1'] ))
{
	$num_file = count($_FILES['file']['name']);
	$select = false;
	$count = 0;
	for($i = 0; $i < $num_file ; $i++)
	{
		if($_FILES['file']['error'][$i] != 0) 
		{
		    $count++;
			continue;
		}
		if($_FILES['file']['name'][$i] != "")
		{
			
			#ฟังก์ชั่นนี้ใช้สำหรับ Rename ชื่อไฟล์ที่ทำการอัพโหลดใหม่ รับค่า $_FILES['file']['name']
			#ผลลัพธิ์จะได้ เช่น รับค่า ทดสอบ.docx ฟังก์ชั่นจะส่งค่ามาเป็น Acdeq12345678.docx เป็นต้น
			function getNewName($fileName){
				$fileName = explode('.',$fileName);
				$i = count($fileName)-1;
				$fileType = strtolower($fileName[$i]);
				$rand = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),0,5);
				$result = $rand.time().'.'.$fileType;
				return $result;
			}
			
			$Filename = getNewName($_FILES['file']['name'][$i]);
			$originalFilename = $_FILES['file']['name'][$i];
			$type = $_FILES['file']['type'][$i];
			
			// .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar
			if ( $type == "image/gif") {$pic_type = 'GIF'; }
			else if ($type == "image/png") {$pic_type = 'PNG'; }
			else if (($type == "image/jpg") or ($type=="image/jpeg") or ($type == "image/pjpeg")) {$pic_type = 'JPG'; }
			else if ($type == "application/octet-stream") {$pic_type = false;}
			else if ($type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {$pic_type = false;}
			else if ($type == "application/pdf") {$pic_type = false;}
			else if ($type == "application/msword") {$pic_type = false;}
			else if ($type == "application/x-shockwave-flash") {$pic_type = false;}
			else if ($type == "application/octet-stream") {$pic_type = false;}
			
			
	
			if(move_uploaded_file($_FILES['file']['tmp_name'][$i], "fileUpload/".$Filename)){
			
			if($pic_type){
					$original_image = "fileUpload/". $Filename ; 
					$pic_size = getimagesize($original_image);
					$desired_width = 250 ;
					$per_div = abs($desired_width - $pic_size[0]) * 100 / $pic_size[0];
					$desired_height = $pic_size[0] > $desired_width ?  $pic_size[1] - floor( $pic_size[1] * $per_div / 100) : $pic_size[1] + floor( $pic_size[1] * $per_div / 100);
					$image = new hft_image($original_image);
					$image->resize($desired_width, $desired_height, '0');
					$image->output_resized("fileUpload/".$Filename, "JPG");
				}
				
					$sql = $db->query("insert into files (doc_type,doc_from,doc_num,doc_quote,doc_date,doc_subject,doc_to, doc_detail,doc_num_get,doc_date_get,upload_admin,original_file_name,file_name,file_url) 
					VALUES ('{$doc_type}', '{$doc_from}','{$doc_num}','{$doc_quote}','{$doc_date}' ,'{$doc_subject}','{$doc_to}','{$doc_detail}' ,'{$doc_num_get}','{$doc_date_get}','{$upload_admin}','{$originalFilename}','{$Filename}','{$file_url}')");
				if($sql)
				{
			 		echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=page_admin.php\">";
					$upload_true = true;
			 	}else{
			 		echo "<H3>ERROR:Can not Upload</H3>";
				 }
			}
		}else{
			$count++;
		}
	}
}
?>


ส่วนโค้ดดาวน์โหลดเป็นแบบนี้
Code (แสดง)
<a href="download.php?pic=<?= $r["file_name"];?>">โหลด</a>


Code (ดาวน์โหลด)
<?
header("Content-Disposition: attachment; filename=".$_GET["pic"]."");
readfile($_GET["pic"]);
?>


มีคนให้ echo $_GET["pic"]; ดู
พอลองแล้วจะแสดง 5ftRi1449823219.docx

เค้าให้แก้เป็นอย่างนี้
Code (PHP)
<?
echo $_GET["pic"];
exit;

header("Content-Disposition: attachment; filename=".$_GET["pic"]."");
readfile($_GET["pic"]);
?>


สรุป สุดท้ายลองทำตามที่มีคนเคยบอกแล้ว
แก้ไม่ได้อ่ะ มันจะแจ้งว่า เช่น รูปภาพ=ภาพไม่ถูกต้อง และ ไฟล์.docx=ไม่สามารถเปิดได้เนื่องจากมีปัญหากับเนื้อหา ประมาณนี้ ช่วยหน่อยนะครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-12-12 11:55:19 By : NuItMaster View : 1531 Reply : 6
 

 

No. 1

Guest


echo ออกมาได้ 5ftRi1449823219.docx

แสดงว่าโครงสร้างโฟล์เดอร์ของท่านไฟล์ download.php กับ 5ftRi1449823219.docx (ที่เป็นต้นฉบับ) อยู่โฟลเดอร์เดียวกันใช่หรือไม่

ถ้าอยู่คนละโฟล์เอร์ท่านต้องระบุพาร์ทตรง readfile($_GET["pic"]); ให้ถูก






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 15:12:52 By : noMerzy
 


 

No. 2



โพสกระทู้ ( 79 )
บทความ ( 0 )



สถานะออฟไลน์


อยู่คนละโฟลเดอร์ ครับ

ไฟล์ download.php อยู่ใน Folder/download.php ส่วน
ไฟล์เอกสาร 5ftRi1449823219.docx อยู่ใน Folder/fileUpload/5ftRi1449823219.docx ครับ

ที่บอกว่ากำหนดให้ถูกคือ ต้องนำไฟล์ download.php เข้าไปอยู่ใน Folder/fileUpload/ และเปลี่ยนแปลง Code (PHP)
<a href="download.php?pic=<?= $r["file_name"];?>">โหลด</a>


ให้เป็น Code (PHP)
<a href="fileUpload/download.php?pic=<?= $r["file_name"];?>">โหลด</a>


ประมาณนี้ปะครับ


ประวัติการแก้ไข
2015-12-12 15:50:46
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 15:42:33 By : NuItMaster
 

 

No. 3



โพสกระทู้ ( 79 )
บทความ ( 0 )



สถานะออฟไลน์


ทดสอบแล้วใช้ได้ครับ ต้องขอขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 15:47:21 By : NuItMaster
 


 

No. 4



โพสกระทู้ ( 1,636 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ผมไม่รู้ว่าโปรแกรมนี้มันทำงานได้ยังไง ถ้ามีการ upload รูปภาพ มากว่า 1 รูป
เพราะ เอา function getNewName($fileName) มาไว้ใน loop มันควรจะเกิด เออเร่อร์แจ้ง ว่า function ซ้ำัน

ต้องย้ายม้นไปไว้ ต้นไฟล์ก่อนบันทัดที่ 2
Code (PHP)
<?php
// แยกฟังก์ชั่นเอาออกมาไว้นอก loop
function getNewName($fileName){
	$fileName = explode('.',$fileName);
	$i = count($fileName)-1;
	$fileType = strtolower($fileName[$i]);
	$rand = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),0,5);
	$result = $rand.time().'.'.$fileType;
	return $result;
}
//////////////////////////////////////////////////////////
include "class.resizepic.php";
$db = new mysqli("localhost", "root", "123456", "dbboard") or die( $db->error);
$db->set_charset('utf8');

if(isset($_POST['Submit1'] )){
	foreach( $_FILES['file']['name'] as $i=>$fn){
		if($_FILES['file']['error'][$i]==UPLOAD_ERR_OK){
			$Filename = getNewName($fn);
			$original_image = "fileUpload/". $Filename ; 
			if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $original_image)){
				if( $pic_size = getimagesize($original_image) ){ 
					// กรณีที่ไฟล์ ไม่ใช่ image $pic_size จะได้ค่า false ถ้าใช่จะเป็น array
					$desired_width = 250 ;
					$desired_height  = $pic_size[1] * $desired_width / $pic_size[0]; 
					// หาความสูง ตาม อัตราส่วน ความกว้าง
					// ไม่เข้าใจ โค๊ดข้างล่าง ทำอะไรนะครับ
					//$per_div = abs($desired_width - $pic_size[0]) * 100 / $pic_size[0];
					//$desired_height = $pic_size[0] > $desired_width ? 
					//		$pic_size[1] - floor( $pic_size[1] * $per_div / 100) : $pic_size[1] + floor( $pic_size[1] * $per_div / 100);
					
					$image = new hft_image($original_image);
					$image->resize($desired_width, $desired_height, '0');
					$image->output_resized("fileUpload/".$Filename, "JPG");
				}
				$db->query( $sql=
					"insert into files (
						doc_type,doc_from,doc_num,doc_quote,doc_date,doc_subject,
						doc_to,doc_detail,doc_num_get,doc_date_get,upload_admin,
						original_file_name,file_name,file_url
					) VALUES (
						'$doc_type','$doc_from','$doc_num','$doc_quote','$doc_date','$doc_subject',
						'$doc_to','$doc_detail','$doc_num_get','$doc_date_get','$upload_admin',
						'$originalFilename','$Filename','$file_url'
					)"
				);
				if( $db->errno)  $error .= $sql . '<br>' . $db->error."<br>";
			}else $error .= "Can not Move Upload File.<br>";
		}else $error .= "Upload Error<br>";
	}
	if( $error=='' ){
		// เอา ตรวจสอบ error มาไว้นอก loop  
		echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=page_admin.php\">";
		$upload_true = true;		
	}else{
		echo "<H3>File ERROR: Can not Upload</H3>".$error;
	}
}
?>



ประวัติการแก้ไข
2015-12-12 15:59:57
2015-12-12 17:50:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 15:59:22 By : NewbiePHP
 


 

No. 5

Guest


ยินดีด้วยครับ

ปรมมือๆๆๆๆๆๆ

ยื้อกันมาหลายวันเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 16:08:10 By : noMerzy
 


 

No. 6



โพสกระทู้ ( 79 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ เดี๋ยวผมจะทอลองดูนะครับ

ขอบคุณทุกท่านครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-12 16:13:45 By : NuItMaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ดาวน์โหลดพวก .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar แล้วใช้งานไม่ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่