免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yhp050
打印 上一主题 下一主题

[html]关于表单的问题,请教高手 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-28 16:26 |只看该作者

  1. <form enctype="multipart/form-data" action="__URL__" method="POST">
  2.     <!-- MAX_FILE_SIZE must precede the file input field -->
  3.     <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  4.     <!-- Name of input element determines name in $_FILES array -->
  5.     Send this file: <input name="userfile" type="file" />
  6.     <input type="submit" value="Send File" />
  7. </form>

复制代码



$_FILES['userfile']['name']
客户端机器文件的原名称。

$_FILES['userfile']['type']
文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。

$_FILES['userfile']['size']
已上传文件的大小,单位为字节。

$_FILES['userfile']['tmp_name']
文件被上传后在服务端储存的临时文件名。

$_FILES['userfile']['error']
和该文件上传相关的错误代码





  1. $uploaddir = '/var/www/uploads/';
  2. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

  3. echo '<pre>';
  4. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  5.    echo "File is valid, and was successfully uploaded. ";
  6. } else {
  7.    echo "Possible file upload attack! ";
  8. }
复制代码

论坛徽章:
0
12 [报告]
发表于 2005-11-28 16:35 |只看该作者
我这样写的代码:
if(move_uploaded_file($_FILES['address']['tmp_name'], "/usr/www/vod/".$_POST[subject]."/".$_FILES["address"]["name"]))
{
echo "<p align='center'>上传文件成功!</p><br>";
}
else
{
echo "<p align='center'>上传文件失败!</p><br>";
结果出现如下错误!

Warning: move_uploaded_file(/usr/www/vod/yingyu/poeme.ape): failed to open stream: Permission denied in /usr/www/media/admin/upload.php on line 61

Warning: move_uploaded_file(): Unable to move '/var/tmp/phpM1eknO' to '/usr/www/vod/yingyu/poeme.ape' in /usr/www/media/admin/upload.php on line 61

但是usr/www/vod/yingyu/目录下明明是有权限的,请问是怎么回事啊?

论坛徽章:
0
13 [报告]
发表于 2005-11-28 16:37 |只看该作者
lz 把

echo $_POST[dbname];

试改为

echo $_POST["dbname"];

我怀疑你定义 dbname 常量了

论坛徽章:
0
14 [报告]
发表于 2005-11-28 16:40 |只看该作者
原帖由 yhp050 于 2005-11-28 16:35 发表
我这样写的代码:
if(move_uploaded_file($_FILES['address']['tmp_name'], "/usr/www/vod/".$_POST[subject]."/".$_FILES["address"]["name"]))
{
echo "< ...



你先看看你的这个 文件夹~~ 有没有 写的权限~

建议对你要操作的文件夹~ chmod($path,0777);

论坛徽章:
0
15 [报告]
发表于 2005-11-28 16:41 |只看该作者
试把你的所有目录里设为 755  或 777,调试一下

注意,是所有目录层(因为有一些空间比较奇怪像该死的 51)

论坛徽章:
0
16 [报告]
发表于 2005-11-28 20:41 |只看该作者
我把整个目录设成了766,还是不行

论坛徽章:
0
17 [报告]
发表于 2005-11-28 21:05 |只看该作者
echo $_POST[dbname];

问题解决了没啊?

应该还是目录权限问题,是 777 哦,是所有的目录,要确定是所有的层次哦

不然的话,就试把文件保存在公开访问的根目录(一般都行),调试一下

论坛徽章:
0
18 [报告]
发表于 2005-11-28 21:24 |只看该作者
上传文件不是用$_POST吧

$_FILES试试啊

论坛徽章:
0
19 [报告]
发表于 2005-11-29 00:23 |只看该作者
原帖由 yhp050 于 2005-11-28 16:35 发表
我这样写的代码:
if(move_uploaded_file($_FILES['address']['tmp_name'], "/usr/www/vod/".$_POST[subject]."/".$_FILES["address"]["name"]))
{
echo "< ...
$_POST[subject]?????这个变量来自哪儿?在你的表单里没有啊。
还有,如果每上传一个文件都要放到$_POST[subject]这个文件夹里的话,显然每次都要新建一个$_POST[subject]文件夹,很简单,加一句mkdir($_POST[subject])就行了,如果$_POST[subject]这个文件夹不存在的话,当然不可能move_uploaded_file($_FILES['address']['tmp_name'], "/usr/www/vod/".$_POST[subject]."/".$_FILES["address"]["name"])成功了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
20 [报告]
发表于 2005-11-29 00:37 |只看该作者
检查一下php是否打开了安全模式,你的目录的所有人是否和web服务器运行时帐号一致,在安全模式下,会检查你正在操作的文件或者目录是否具有和执行的程序相同的UID
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP