PHP文件上传_把客户端的文件上传到服务器端

4 篇文章 0 订阅

任务:把客户端的文件上传到服务器端

前提:要上传文件首先需要给用户一个界面,可以用html实现。

<?php 
header('Content-type:text/html;charset=utf-8');

//脚本执行结束,上传的文件立即被删除了。所以需要把文件移动到我们想要的位置。

if(isset($_POST['submit'])){	//如果按了上传按钮
	//判断文件是否是post方式上传的,是的话正常上传;否则就给出提示,增加安全性。
	if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
		//把原文件名存入一个数组中
		$arr = pathinfo($_FILES['myfile']['name']);
		
		//以日期的形式对文件重命名(作用:防止上传的文件名一样,文件被覆盖)
		$newName = date('YmdGis').rand(1000,9999);
		
		//移动文件到新路径
		//$arr['extension'] 是扩展名
		//"uploads/{$newName}.{$arr['extension']}" 是文件的新路径
		if(move_uploaded_file($_FILES['myfile']['tmp_name'], "uploads/{$newName}.{$arr['extension']}")){
			echo '上传成功啦!';
		}else{
			echo '移动文件失败!';
		}
	}else{
		exit('可能有攻击,请你做合法的事情!');
	}
 	var_dump($_FILES);		//输出上传的文件的详细信息
} 
?>


<!DOCTYPE html>
<html lang="zh-CN">		
	<head>
		<meta charset="utf-8">
		<title>上传页面</title>
	</head>
	<body>
		<!-- 
		通过form表单制作上传按钮。
		上传方式为post方式。
		详细配置参数在php.ini文件中,若是修改相关参数,需要重启apache服务器。
		 -->
	 	<form action="" method="post" enctype="multipart/form-data">
			<input type="file" name="myfile" />
			<input type="submit" name="submit" value="开始上传" />
		</form>
	</body>
</html>

请添加图片描述



专门用于存放上传文件的文件夹uploads:
请添加图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
上传文件可以使用 HTML 的 `<form>` 标签和 `<input>` 标签来实现。需要将 `<form>` 标签的 `enctype` 属性设置为 `multipart/form-data`,这样浏览器就会将表单中的文件数据进行特殊的编码,然后再将编码后的数据发送给服务器。在服务器端,可以使用 PHP 提供的 $_FILES 数组来获取上传的文件信息。 以下是一个简单的上传文件HTML 表单: ``` <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="上传文件" name="submit"> </form> ``` 其中,`action` 属性指定了表单提交的 URL,`method` 属性指定了表单提交的方法(此处为 POST),`enctype` 属性指定了表单数据的编码方式。`<input>` 标签的 `type` 属性为 `file`,表示这是一个文件上传的输入框,`name` 属性为 `fileToUpload`,表示上传文件的参数名。 在服务器端,可以使用以下 PHP 代码来处理上传的文件: ``` <?php if(isset($_POST["submit"])) { $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // 检查文件是否已存在 if (file_exists($target_file)) { echo "对不起,该文件已存在。"; $uploadOk = 0; } // 检查文件大小 if ($_FILES["fileToUpload"]["size"] > 500000) { echo "对不起,文件过大。"; $uploadOk = 0; } // 允许特定的文件格式 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "对不起,只允许上传 JPG, JPEG, PNG 和 GIF 文件。"; $uploadOk = 0; } // 检查 $uploadOk 是否为 0 if ($uploadOk == 0) { echo "对不起,文件上传失败。"; // 如果一切都没问题,尝试上传文件 } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 上传成功。"; } else { echo "对不起,文件上传失败。"; } } } ?> ``` 代码中首先检查了上传文件的大小、格式等信息,如果有问题则提示用户上传失败。如果一切都没问题,则将上传的文件移动到指定的目录中。 文件下载可以使用 PHP 的 `readfile()` 函数来实现。以下是一个简单的下载文件的 PHP 代码: ``` <?php $file = "example.txt"; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; } else { echo "对不起,文件不存在。"; } ?> ``` 代码中首先检查了要下载的文件是否存在,如果存在则设置了 HTTP 响应头,告诉浏览器该文件需要以附件形式下载。最后调用了 `readfile()` 函数将文件内容输出到客户端

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值