php上传文件到服务器

php上传文件到服务器,第1张

1、通过PHP,可以把文件上传服务器。创建一个文件上传表单,下面这个供上传文件的 HTML 表单:

<html>

<body>

<form action="upload_file.php" method="post"

enctype="multipart/form-data">

<label for="file">Filename:</label>

<input type="file" name="file" id="file" /> 

<br />

<input type="submit" name="submit" value="Submit" />

</form>

</body>

</html>

2、创建上传脚本,命名为"upload_file.php" 文件含有供上传文件的代码:

<?php

if ($_FILES["file"]["error"] > 0)

  {

  echo "Error: " . $_FILES["file"]["error"] . "<br />"

  }

else

  {

  echo "Upload: " . $_FILES["file"]["name"] . "<br />"

  echo "Type: " . $_FILES["file"]["type"] . "<br />"

  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"

  echo "Stored in: " . $_FILES["file"]["tmp_name"]

  }

?>

注:通过使用 PHP 的全局数组 “$_FILES”,就可以实现从客户计算机向远程服务器上传文件。

利用PHP,你总是可以有多种方式来完成某个特定的任务。

我们就拿文件上传举个例子。

当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。

青岛电脑培训http://www.kmbdqn.cn/认为你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。

PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。

使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。

关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意力放在基于FTP的文件上传上了(但是在后面给出的例子中,两种方式你都会看到)。

要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。

第一步:确信你拥有连接/上传到FTP服务器的权限PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。

你的第一项任务是确信你已经拥有了完成这项任务的信任书。

这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。

一个实例:

首先,在自己台式机和笔记本上都开通了ftp,这个不会的同学可以网上查serv-u,相关教程肯定不少的。

然后在台式机本地做了个测试:

$ftp_server = "192.168.1.100"

$ftp_user_name = "laohu"

$ftp_user_pass = "123456"

$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server")

$file = 'test.txt'

$remote_file = '/test/a.txt'

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

echo "文件移动成功\n"

} else {

echo "移动失败\n"

}

ftp_close($conn_id)

运行后:文件移动成功。

要的就是这个效果了,之后用台式机做程序服务器,上传附件时全用ftp方法上传至笔记本上,笔记本ip是105,相应代码如下:

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {

$ftp_server = "192.168.1.105"

$ftp_user_name = "lesley"

$ftp_user_pass = "123456"

$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server")

$file = $_FILES['uploadfile']['tmp_name']

$remote_file = '/test/'.$_FILES['uploadfile']['name']

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

echo "文件:".$_FILES['uploadfile']['name']."上传成功\n"

} else {

echo "上传失败\n"

}

ftp_close($conn_id)

}

对应的前台页面代码:

<form action="uploadfile.php" method="post" enctype="multipart/form-data">

<input type="file" name="uploadfile" id="uploadfile" />

<input type="submit" name="submit" value="submit" />

</form>

运行后确实成功。

需要注意:

在用ftp_put方法时,第四个参数传送模式,需要用FTP_BINARY(二进制模式),用FTP_ASCII(文本模式)时,图片能上传但无法显示,其他文件重命名、中文乱码解决、上传权限控制等,就不在此提及了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/235676.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存