作者gmoz (Gmoz)
看板PHP
标题Re: [请益] 中文档案上传, 再move_uploaded_file() …
时间Fri Aug 17 21:16:46 2007
※ 引述《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