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,027

HOME > PHP > PHP Forum > สอบถามerror เมื่อเปิดfile ที่downloadลงมาที่ client.. แต่หากดูไฟลล์ที่เก็บไว้ที่ Local Server folder กลับใช้ได้



 

สอบถามerror เมื่อเปิดfile ที่downloadลงมาที่ client.. แต่หากดูไฟลล์ที่เก็บไว้ที่ Local Server folder กลับใช้ได้

 



Topic : 132589



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



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



เรียนผู้รู้ช่วยแนะนำด้วยค่ะ มี 2 ปัญหา

1.ชื่อ ไฟลล์ที่เป็นภาษาไทย ที่ Code PHP ทำการ move_uploaded_file ไปไว้ใน folder ที่สร้างขึ้นมารหัสภาษาไทย เพี้ยน ทั้งๆที่การinsert ลงใน field ของ MySQL รหัสภาษาไทยถูกต้อง
ได้แนบ Code PHP ช่วงที่ upload ขึ้นไป ซึ่งไม่แน่ใจว่า เป็นส่วนที่ทำให่้ผลของไฟล์ Application ไม่ถูกต้องหรือไม่ แต่แปลกใจ ว่า ก็สามารถเปิด file application ใน folder ใน Local Server ได้แม้รหัสภาษาไทยของชื่อไฟล์ไม่ถูกต้องก็ตาม
Code (PHP)
<?php
$link = @mysqli_connect("localhost", "root", "", "pmj")
 			or die(mysqli_connect_error()."</body></html>");
mysqli_set_charset($link, "utf8");
if(is_uploaded_file($_FILES['file']['tmp_name'])) {
	$e = $_FILES['file']['error'];
	
	//ถ้าเป็นเลขที่ไม่ใช่ 0 แสดงว่าเกิดข้อผิดพลาด
	if($e != 0) { 
		$msg = "";	
		if($e == 1 || $e == 2) {
			$msg = "ไฟล์ที่อัปโหลดมีขนาดเกินกำหนด";
		}
		else {
			$msg = "เกิดข้อผิดพลาดในการอัปโหลดไฟล์";
		}
		echo '<span class="err">'.$msg.'</span>';
	}
	else {
		$mime_type = $_FILES['file']['type'];
		$name = $_FILES['file']['name'];
		$tmp_name = $_FILES['file']['tmp_name'];
		$size = $_FILES['file']['size'];
		$detail = $_POST['file_detail'];
		
		//$accept = array("image", "video", "audio");
	$accept = array("image", "video", "audio", "application");
		$t = explode("/", $mime_type);
		$type = $t[0];
		
		if(!in_array($type, $accept)) {
			echo '<span class="err">ต้องเป็นไฟล์ภาพ, เสียง หรือวิดีโอเท่านั้น</span>';
			mysqli_close($link);
			exit("</body></html>");
		}
		@mkdir($type); //ถ้ายังไม่มีไดเร็กทอรี ให้สร้างขึ้นใหม่
	
		$target = "$type/$name";
		$newname  = $name;
		if(file_exists($target)) {
			$oldname = pathinfo($name, PATHINFO_FILENAME);
			$ext =  pathinfo($name, PATHINFO_EXTENSION);
		
			$newname = $oldname;
			do {
				$r = rand(1000, 9999);
				$newname = $oldname."-".$r.".$ext";	//เช่น bird-1234.jpg
				$target = "$type/$newname";
			} while(file_exists($target));
		}
	
		move_uploaded_file($_FILES['file']['tmp_name'], $target);
 
		$sql = "INSERT INTO fileshare VALUES(
					'', '$newname', '$detail', '$mime_type',  '$size', 0)";
		
		mysqli_query($link, $sql);
		echo "<h3>จัดเก็บไฟล์เรียบร้อยแล้ว</h3>";
	}
}
mysqli_close($link);
?>
<form method="post" enctype="multipart/form-data">
	<div id="top">อัปโหลดไฟล์</div>
    <label>ต้องเป็นไฟล์ภาพ, เสียง หรือวิดีโอเท่านั้น และมีขนาดไม่เกิน 2 MB</label><br>
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152"> 
    <input type="file" name="file" accept="image/*|video/*|audio/*|application/*" required><br><br>
    <input type="text" name="file_detail" placeholder="ลักษณะและคำสำคัญเกี่ยวกับไฟล์นี้ *" maxlength="250" required><br>
	<div id="bottom">
    	<button id="back" type="button" onClick="location='index.php'">หน้าหลัก</button>
		<button id="submit">ส่งข้อมูล</button><br class="clear">
	</div>
</form>


หลังจาก upload ขึ้นไป ลง ในฐานข้อมูล และ file ที่สร้างขึ้น ใน folder ใน local server
ที่เก็บในฐานข้อมูล รหัสภาษาไทยถูกต้อง
Folder ที่ Local Server จะเห็นรหัสภาษาไทย ของfile ที่ upload ขึ้นไปไม่ถูกต้องแต่มีขนาดของfile ถูกต้องและเปิดใช้ังานได้
file ที่upload ลงใน local server

หลังจาก upload เสร็จ มี CodePHP เพื่อ view และเพื่อ download
Code (PHP)
<?php
$link = @mysqli_connect("localhost", "root", "", "pmj")
 			or die(mysqli_connect_error()."</body></html>");
			
$id = $_GET['id'];
$sql = "SELECT * FROM fileshare WHERE file_id = '$id'";
$rs = mysqli_query($link, $sql);
$data = mysqli_fetch_array($rs);

$type = $data['file_type'];
$t = explode("/", $type);
$src = "{$t[0]}/{$data['file_name']}";
echo "<h3>ไฟล์: {$data['file_name']}</h3>";

if($t[0]=="image") {
	echo "<img src=\"$src\">";
}
else if($t[0]=="video") {
	echo '<video src="'.$src.'" width="320" height="240" preload="auto" controls></video>';
}
else if($t[0]=="audio") {
	echo '<audio src="'.$src.'" preload="auto" controls></audio>';
}
else {
	echo "<h3>ไม่สามารถเปิดไฟล์นี้ได้ กรุณาดาวน์โหลดมาเปิดบนเครื่องของท่านเอง</h3>";
}

mysqli_close($link);
?>



2. ปัญหาใหญ่คือ หลังจาก download ลงมาตาม Code PHP แล้ว ไม่สามารถเปิด file ที่ download ลงมาได้ เกิด error ได้แนบ Code PHP ช่วง download และ view ในส่วนที่น่าจะเกี่ยวข้องมาในที่นี้ด้วย และภาพของการ error หลังจากเปิด file ที่download
file Word ซึ่ง Code PHP upload ทำการmove_uploaded_file ไว้ใน Sub folder ในLocal Server

Code PHP เพื่อการ Download

Code (PHP)
<?php
$link = @mysqli_connect("localhost", "root", "", "pmj")
 			or die(mysqli_connect_error()."</body></html>");
			
$id = $_GET['id'];
$sql = "UPDATE fileshare SET file_download = file_download + 1 WHERE file_id = '$id'";
mysqli_query($link, $sql);

$sql = "SELECT * FROM fileshare WHERE file_id = '$id'";
$rs = mysqli_query($link, $sql);
$data = mysqli_fetch_array($rs);

$type = $data['file_type'];
$t = explode("/", $type);
$src = "{$t[0]}/{$data['file_name']}";

header("Content-Type:application/download");
header("Content-Disposition:attachment;filename=$src");
header("Content-Transfer-Encoding:binary");

readfile("$src");	 

mysqli_close($link);
?>


ภาพ ช่วงที่ Download ลงมา และ เมื่อเปิด file ที่ download

ช่วงที่downloadลงมา
ภาพ error



Tag : PHP, MySQL, HTML, Word (Word.Application), Apache, XAMPP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-11-19 21:16:48 By : 494384544414604 View : 1401 Reply : 2
 

 

No. 1



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



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


ถ้าอยากเห็น ไฟล์ใน folder เป็นภาษาไทย ต้องเปลี่ยน locale (region / administrator / locale) ของเครื่อง ที่เก็บไฟล์ เป็นไทย ด้วย

การกำหนด locale เป็นไทย เป็นการบอกให้ window แสดง อักษร ascii ส่วนเกินจาก 127 ให้แสดงในรูปแบบ ของภาษาไทย
ตามรหัส locale นั้นๆ ซึ่ง ภาษาไทย เท่ากับ win-874 หรือ tis-620

และถ้าข้อมูลชื่อไฟล์นั้น เป็น utf8 จำเป็นต้องแปลงให้เป็น tis-620 ก่อน


ปล.
ส่วนการเออเร่อร์ ของการ download ให้แก้ไข php.ini upload_max_filesize








ประวัติการแก้ไข
2018-11-20 06:55:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-11-19 22:07:35 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 4,706 )
บทความ ( 8 )



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


เอาจริงๆมันไม่ควรเก็บภาษาอื่นเลยนะ นอกจากอังกฤษกับตัวเลข
อันนี้เป็นปัญหาสุดคลาสสิกมานานโข
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-11-19 23:04:38 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามerror เมื่อเปิดfile ที่downloadลงมาที่ client.. แต่หากดูไฟลล์ที่เก็บไว้ที่ Local Server folder กลับใช้ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 03
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 อัตราราคา คลิกที่นี่