当前位置:编程学习 > php >>

php上传文件的小程序,文件名是数字和英文的没问题,用中文就无法上传 看图:

追问:
        	
				
可以生成新的文件名,但是我想显示原来的文件名 ,有什么办法吗?
答案:上传文件是不能包含中文名的,可以生成新的文件名再上传。
如果想保留原文件名,可以写入数据库,然后输出时做一个专门的脚本,用于读取原文件名并输出。
我以MYSQL举例(输出脚本):
<?php
$file = $_GET['downurl'];
$con = mysql_connect("数据库主机名","帐号","密码");
if(!$con)
exit(mysql_errno().":".mysql_error());
$sql = "SELECT * FROM fname WHERE fileurl='$file'";
$result = mysql_query($sql,$con);
$row = mysql_fetch_array($result);
header("Content-Disposition: attachment; filename='".$row['filename']."'")
echo file_get_contents($file);
?>
有了这个脚本,那么还需要在MYSQL建立一个表fname。
执行以下SQL:

CREATE TABLE 'fname'
(
fileurl varchar(255),
filename varchar(255)
)
最后你在上传文件成功时加一个写入数据的操作:
<?php
$con = mysql_connect("数据库主机名","帐号","密码");
if(!$con)
exit(mysql_errno().":".mysql_error());
$sql = "INSERT INTO fname(fileurl,filename) VALUES('文件URL','原文件名')";
?>
文件URL我就不说了,你一定会弄。原文件名,可以通过$_FILES获取,具体如何获取,我就不写了,百度一下,W3SCHOOL,PHP手册都有。
其他:那是 生成的文件名就不要用原来的中文名称,你可以自己按照规则来一个 想要用原来的名子只能是把图片相关信息保存到数据库里,在读取上传时直接获取数据库里的路径与原名就可以了。 
move_uploaded_file($_FILES['fileField']['tmp_name'],$_FILES['fileField']['name']);

而且你的上传函数参数也写错了,没有指定给上传的临时文件名,我在本地测了下用中文件名是没有问题. 

上一个:如何设计?是把一课设计成一个flash好些呢,还是设计成普通php程序?
下一个:下的php程序怎么打开

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,