Re: [請益] 中文檔案上傳, 再move_uploaded_file() …
※ 引述《origo (補習班版在哪兒啊,告訴我)》之銘言:
: ※ 引述《origo (補習班版在哪兒啊,告訴我)》之銘言:
: : 想請問一下各位,
: : 我寫好一個檔案上傳的php程式,
: : 英文檔名是ok的,
: : 但是中文檔名的話, 就會在move_uploaded_file時出錯,
: : 我是用$_FILES['filepath']['name']或者是利用javascript取出
: : 中文檔名在POST出去的方法,
: : 都是不行, 請問是為什麼呢?
: 不好意思, 我的程式碼是...
: if( $_FILES['filepath']['tmp_name'] != "" )
: {
: /* 這裡會有錯, $_POST['fname']則是在submit時就用JScript取出中文檔名 */
: if( false == move_uploaded_file($_FILES['filepath']['tmp_name'],
: "../subject/".$_POST['fname']) )
: {
: $result = false;
: }
: else
: $result = true;
: unlink("../subject/".$row2['filepath']);
: $sql="UPDATE `basic` SET `experience` = '".$experience."', `contest` = '".$contest."', `prize` = '".$prize."', `group` = '".$group."', `subject` = '".$subject."', `filepath` = '".$_FILES['filepath']['name']."' , `date` = '".$date."' WHERE `id: ` = ".$user_id." ;";
: }
會不會是因為編碼的關係 0.0...
要不要改個方式,先將檔案資訊存入資料庫
然後把檔案更名(例如uid)後再存入資料夾,
要下載的時候再把檔案資訊抓出來,在header()裡面幫他改回原來的名字?
上傳
$query = "INSERT INTO uploads
(file_name,file_size)
VALUES('{$_FILES["filepath"]["name"]}',{$_FILES["filepath"]["size"]}
.
.
$extension = explode ('.', $_FILES["filepath"]['name']);
$d = $extension[1];
$uid = mysql_insert_id();
$filename = $uid .'.'. $d ;
if(move_uploaded_file($_FILES["upload$t"]['tmp_name'],"../subject/$filename"))
echo '上傳成功!';
下載
$query = "SELECT file_name,file_size FROM...WHERE WHERE uid = {$_GET['uid']}";
mysql_query("SET CHARACTER SET 'big5'");
.
.
$result = mysql_query($query);
list($fn,$fs)=mysql_fetch_array($result,MYSQL_NUM);
.
.
$extension = explode('.' , $fn);
$the_file='../subject/'.$_GET['uid'].'.'.$extension[1];
.
.
header("Content-Disposition: attachment; filename=$fn");
readfile ($the_file);
不知道這樣可不可以 @@
有時候我遇到奇怪的情形就會直接用別種方法來做了
(因為是新手等級,有些BUG抓不到 〒△〒)
------
目標成為抓蟲少年
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.129.41.35
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章