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

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


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

 
Topic : 120444



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



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



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

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

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

ไม่รู้ว่ามีปัญหากับโค้ดที่อัพโหลดไปหาป่าว ส่วนโค้ดที่อัพโหลดเป็นแบบนี้
Code (อัพโหลด)
01.<?php
02.include "class.resizepic.php";
03.$db = new mysqli("localhost", "root", "123456", "dbboard");
04.if(mysqli_connect_errno()) die("Connect Failed! :" . mysqli_connect_error());
05.$db->set_charset('utf8');
06. 
07.if(isset($_POST['Submit1'] ))
08.{
09.    $num_file = count($_FILES['file']['name']);
10.    $select = false;
11.    $count = 0;
12.    for($i = 0; $i < $num_file ; $i++)
13.    {
14.        if($_FILES['file']['error'][$i] != 0)
15.        {
16.            $count++;
17.            continue;
18.        }
19.        if($_FILES['file']['name'][$i] != "")
20.        {
21.             
22.            #ฟังก์ชั่นนี้ใช้สำหรับ Rename ชื่อไฟล์ที่ทำการอัพโหลดใหม่ รับค่า $_FILES['file']['name']
23.            #ผลลัพธิ์จะได้ เช่น รับค่า ทดสอบ.docx ฟังก์ชั่นจะส่งค่ามาเป็น Acdeq12345678.docx เป็นต้น
24.            function getNewName($fileName){
25.                $fileName = explode('.',$fileName);
26.                $i = count($fileName)-1;
27.                $fileType = strtolower($fileName[$i]);
28.                $rand = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),0,5);
29.                $result = $rand.time().'.'.$fileType;
30.                return $result;
31.            }
32.             
33.            $Filename = getNewName($_FILES['file']['name'][$i]);
34.            $originalFilename = $_FILES['file']['name'][$i];
35.            $type = $_FILES['file']['type'][$i];
36.             
37.            // .gif, .png, .jpg, .zip, .docx, .pdf, .doc, .swf, .rar
38.            if ( $type == "image/gif") {$pic_type = 'GIF'; }
39.            else if ($type == "image/png") {$pic_type = 'PNG'; }
40.            else if (($type == "image/jpg") or ($type=="image/jpeg") or ($type == "image/pjpeg")) {$pic_type = 'JPG'; }
41.            else if ($type == "application/octet-stream") {$pic_type = false;}
42.            else if ($type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {$pic_type = false;}
43.            else if ($type == "application/pdf") {$pic_type = false;}
44.            else if ($type == "application/msword") {$pic_type = false;}
45.            else if ($type == "application/x-shockwave-flash") {$pic_type = false;}
46.            else if ($type == "application/octet-stream") {$pic_type = false;}
47.             
48.             
49.     
50.            if(move_uploaded_file($_FILES['file']['tmp_name'][$i], "fileUpload/".$Filename)){
51.             
52.            if($pic_type){
53.                    $original_image = "fileUpload/". $Filename ;
54.                    $pic_size = getimagesize($original_image);
55.                    $desired_width = 250 ;
56.                    $per_div = abs($desired_width - $pic_size[0]) * 100 / $pic_size[0];
57.                    $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);
58.                    $image = new hft_image($original_image);
59.                    $image->resize($desired_width, $desired_height, '0');
60.                    $image->output_resized("fileUpload/".$Filename, "JPG");
61.                }
62.                 
63.                    $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)
64.                    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}')");
65.                if($sql)
66.                {
67.                    echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=page_admin.php\">";
68.                    $upload_true = true;
69.                }else{
70.                    echo "<H3>ERROR:Can not Upload</H3>";
71.                 }
72.            }
73.        }else{
74.            $count++;
75.        }
76.    }
77.}
78.?>


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


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


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

เค้าให้แก้เป็นอย่างนี้
Code (PHP)
1.<?
2.echo $_GET["pic"];
3.exit;
4. 
5.header("Content-Disposition: attachment; filename=".$_GET["pic"]."");
6.readfile($_GET["pic"]);
7.?>


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



Tag : PHP

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-12-12 11:55:19 By : NuItMaster View : 1559 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)
1.<a href="download.php?pic=<?= $r["file_name"];?>">โหลด</a>


ให้เป็น Code (PHP)
1.<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)
01.<?php
02.// แยกฟังก์ชั่นเอาออกมาไว้นอก loop
03.function getNewName($fileName){
04.    $fileName = explode('.',$fileName);
05.    $i = count($fileName)-1;
06.    $fileType = strtolower($fileName[$i]);
07.    $rand = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),0,5);
08.    $result = $rand.time().'.'.$fileType;
09.    return $result;
10.}
11.//////////////////////////////////////////////////////////
12.include "class.resizepic.php";
13.$db = new mysqli("localhost", "root", "123456", "dbboard") or die( $db->error);
14.$db->set_charset('utf8');
15. 
16.if(isset($_POST['Submit1'] )){
17.    foreach( $_FILES['file']['name'] as $i=>$fn){
18.        if($_FILES['file']['error'][$i]==UPLOAD_ERR_OK){
19.            $Filename = getNewName($fn);
20.            $original_image = "fileUpload/". $Filename ;
21.            if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $original_image)){
22.                if( $pic_size = getimagesize($original_image) ){
23.                    // กรณีที่ไฟล์ ไม่ใช่ image $pic_size จะได้ค่า false ถ้าใช่จะเป็น array
24.                    $desired_width = 250 ;
25.                    $desired_height  = $pic_size[1] * $desired_width / $pic_size[0];
26.                    // หาความสูง ตาม อัตราส่วน ความกว้าง
27.                    // ไม่เข้าใจ โค๊ดข้างล่าง ทำอะไรนะครับ
28.                    //$per_div = abs($desired_width - $pic_size[0]) * 100 / $pic_size[0];
29.                    //$desired_height = $pic_size[0] > $desired_width ?
30.                    //      $pic_size[1] - floor( $pic_size[1] * $per_div / 100) : $pic_size[1] + floor( $pic_size[1] * $per_div / 100);
31.                     
32.                    $image = new hft_image($original_image);
33.                    $image->resize($desired_width, $desired_height, '0');
34.                    $image->output_resized("fileUpload/".$Filename, "JPG");
35.                }
36.                $db->query( $sql=
37.                    "insert into files (
38.                        doc_type,doc_from,doc_num,doc_quote,doc_date,doc_subject,
39.                        doc_to,doc_detail,doc_num_get,doc_date_get,upload_admin,
40.                        original_file_name,file_name,file_url
41.                    ) VALUES (
42.                        '$doc_type','$doc_from','$doc_num','$doc_quote','$doc_date','$doc_subject',
43.                        '$doc_to','$doc_detail','$doc_num_get','$doc_date_get','$upload_admin',
44.                        '$originalFilename','$Filename','$file_url'
45.                    )"
46.                );
47.                if( $db->errno)  $error .= $sql . '<br>' . $db->error."<br>";
48.            }else $error .= "Can not Move Upload File.<br>";
49.        }else $error .= "Upload Error<br>";
50.    }
51.    if( $error=='' ){
52.        // เอา ตรวจสอบ error มาไว้นอก loop 
53.        echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=page_admin.php\">";
54.        $upload_true = true;       
55.    }else{
56.        echo "<H3>File ERROR: Can not Upload</H3>".$error;
57.    }
58.}
59.?>



ประวัติการแก้ไข
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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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