请哪位高手详细说一下文件上传的问题

kitling 2003-10-28 08:46:03
在搜索中看了半天,也没明白。自己编写了一个程序:
<html>
<head>
<title>处理上载文件</title>
</head>
<body>
<?php
$username="user";
$pw="user";
$server="10.22.4.241";
$cdir="image/";
if(isset($_POST["ok"]))
{
$conn = ftp_connect($server);
if($conn)
{
if(ftp_login($conn, $username, $pw))
{
if(ftp_chdir($conn, $cdir))
{
$filename=basename(str_replace("\\","/",$_POST["pic"]));
$res_code=ftp_put($conn,$filename,$_POST["pic"],FTP_BINARY);
if($res_code)
{
echo "上传成功!";
}
else
{
echo "上传错误!";
}
ftp_close($conn);
}
else
{
echo "chdir error";
}
}
else
{
echo "login error";
}
}
else
{
echo "connect error";
}
}
else
{
echo "???";
}

?>

<form action="temp.php" method="post">
<input name="pic" type="file">
<input type="submit" value="上传文件" name=ok>
</form>
</body>
</html>

-------------------------------------------------------------------
执行后出现如下错误:

Warning: error opening d:\\image\\010.jpg in /var/www/html/1234/temp.php on line 26

//注:错误出在:$res_code=ftp_put($conn,$filename,$_POST["pic"],FTP_BINARY);这句上??

上传错误!
Fatal error: Call to undefined function: ftp_close() in /var/www/html/1234/temp.php on line 35


Why?


我把form改写成:
<form enctype="multipart/form-data" action="temp.php" method="post">
则根本不提交,点了提交后一闪又回到初始态,程序认为$_POST["ok"]不存在????
把if(isset(...))删除了,又出现如上错误??

Why??

如果想用HTTP方式上传的话,具体怎么做?
我编写了一个,但同样是告诉我 d:\\image\\010.jpg 打开时错误???
我看了其它人的文章,好像只是说把临时目录中的copy到目标中,那么“临时目录”是不是也在服务器上?
我如果想把本地的(本地机为d:\image\010.jpg)放到指定的目录中去(服务器/image下),如何具体做,试着抄写了其它人的一大堆例程,但没有一个成功??

再问一下:HTTP方式与FTP方式哪种更好一些,比如安全性等方面。

非常感谢!非常感谢!非常感谢!非常感谢!非常感谢! :)



...全文
42 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chairj 2003-10-29
  • 打赏
  • 举报
回复
<?php
if($ima_name!="")
{
$extname=substr($ima_name,-3);
if($extname!="gif"&&$extname!="jpg") //判断图片格式
{
header("location:test.php?err=图片格式错误!");
exit;
}
else
{
$utime=time();
$pic="../image/".$utime.$ima_name; //图片上传到的路径+文件名称
$pic2=$utime.$ima_name; //文件名称
copy($ima,$pic);
}
}
?>

<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1">
<input name="ima" type="file" id="ima">
</form>
okdw 2003-10-29
  • 打赏
  • 举报
回复
你用的是ftp长传,首先要保证你有ftp服务器,比如server-U。
php.ini:allow_url_fopen = On
最好还是用http方式的,用copy函数
userspring 2003-10-29
  • 打赏
  • 举报
回复
我这里有一个文件,你看看
<?
session_start();
require"../config.php";
require"../check2.php";
?>
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="form1">
<table width="200" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#0000CC">
<tr>
<td><table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#F6F6F6">
<td width="181"> </td>
<td width="419"> </td>
</tr>
<tr bgcolor="#F6F6F6">
<td colspan="2"><div align="center"><strong><font color="#006633">文
件 上 传</font></strong></div></td>
</tr>
<tr bgcolor="#F6F6F6">
<td> </td>
<td> </td>
</tr>
<tr bgcolor="#F6F6F6">
<td><div align="right"><font color="#003366" size="2">所属类别:</font></div></td>
<td><select name="lei" size="1">
<option>***请选择***</option>
<option value="yg">员工照片</option>
<option value="open">开料整形系列</option>
<option value="hot">热压烫压系列</option>
<option value="heigh">高频机系列</option>
<option value="gule">胶水涂布系列</option>
</select></td>
</tr>
<tr bgcolor="#F6F6F6">
<td height="27"><div align="right"><font color="#003366" size="2">文件名称:</font></div></td>
<td><input type="text" name="name1"></td>
</tr>
<tr bgcolor="#F6F6F6">
<td><div align="right"><font color="#003366" size="2">说明内容
<input type="hidden" name="cbg" value="clf">
:</font></div></td>
<td><textarea name="intro" cols="50" rows="6"></textarea></td>
</tr>
<tr bgcolor="#F6F6F6">
<td height="34"><div align="right"><font color="#003366" size="2">请选择要上传的文件:</font></div></td>
<td> <input type="hidden" name="PHP_MAX_SIZE" value="1000000"> <input type="file" name="picfile">
</td>
</tr>
<tr bgcolor="#F6F6F6">
<td height="46" colspan="2"><div align="center">
<input type="submit" name="submit" value="上传文件">
  
<input type="reset" name="Reset" value="全部重置">
</div></td>
</tr>
<tr bgcolor="#F6F6F6">
<td> </td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
<?
if($cbg=="clf")
{
if($picfile!="")
{
$path="image3/";
@mkdir($path);
$exten=strchr($picfile_name,".");
$newpicfile="pic".date("YmdHis").$exten;
$newpicfiles=$newpicfile;
$newpic=$path.$newpicfile;
echo $newpicfile;
if(copy($picfile,$newpic))
{
echo"图片上载成功<br>";
}
else
{
echo"图片上载失败!";
}
unlink($picfile);
}
else
{
echo"请选择要上传的图片<meta http-equiv=refresh content=1;url=upload.php>";
}
$connect=mysql_connect($host,$root,$pas);
mysql_select_db($db);
$result2=mysql_query("select * from $pic");
$query="insert into $pic(lei,name1,intro,picname) values('$lei','$name1','$intro','$newpicfile')";
$result=mysql_query($query);echo $result."<br>";
if($result)
{
echo"添加成功";
}
else
{
echo"添加失败";
}
mysql_close($connect);
}
?>
kitling 2003-10-29
  • 打赏
  • 举报
回复
我是先试了http方式不行,然后改用ftp方式的,但也不行。

问一下,用ftp方式,是不是不用加: enctype="multipart/form-data" ?
bflovesnow 2003-10-29
  • 打赏
  • 举报
回复
ftp、http和表单上传根本就不同,怎么能混合使用?

该用什么就用什么。
kitling 2003-10-29
  • 打赏
  • 举报
回复
我的程序就是照着例子做了,但总是在ftp_put()函数出错???

在php.ini中哪项是配置ftp或http上传的

谢谢!
bflovesnow 2003-10-29
  • 打赏
  • 举报
回复
晕~
是$_FILES而非$_FILE

精华区很多例子,看看嘛
kitling 2003-10-29
  • 打赏
  • 举报
回复
我如果加了 enctype="multipart/form-data" 这句后 $_POST["file"]或$_FILE["file"]["name"]等就都没有值了??
而我不加的话,在运行到ftp_put()函数时就报错??

kitling 2003-10-28
  • 打赏
  • 举报
回复
例子一大堆,但是照着做都不行。我的客户端是win,服务器端是linux :(
luok 2003-10-28
  • 打赏
  • 举报
回复
不是有很多例子么

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧