if($_POST['page']==1){ file_put_contents($fname,$data); } else { //其余文件追加到文件末尾 file_put_contents($fname,$data,FILE_APPEND); } //最后一片文件 if($_POST['totalPage']==$_POST['page']){ $status=2; } //返回上传状态 $res=['status'=>$status,'downUrl'=>"http://localhost/data.dat"]; echo json_encode($res); ———————————————— 版权声明:本文为CSDN博主「老朱-yubing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/robinhunan/article/details/102853511
时间: 2024-01-20 15:02:58 浏览: 33
这段 PHP 代码是在处理客户端分片上传文件的情况下,将上传的文件数据保存到服务器上,并返回上传状态和文件下载链接。
首先,代码判断当前上传的是第一页数据,如果是,则使用 file_put_contents 函数将文件数据写入到指定的文件中:
```
if($_POST['page']==1){
file_put_contents($fname,$data);
}
```
如果上传的不是第一页数据,则使用 FILE_APPEND 标志将数据追加到文件末尾:
```
else {
file_put_contents($fname,$data,FILE_APPEND);
}
```
然后,判断当前上传的是最后一页数据,如果是,则将上传状态设置为 2:
```
if($_POST['totalPage']==$_POST['page']){
$status=2;
}
```
最后,将上传状态和文件下载链接以 JSON 格式返回给客户端:
```
$res=['status'=>$status,'downUrl'=>"http://localhost/data.dat"];
echo json_encode($res);
```
需要注意的是,这段代码仅仅是处理了客户端上传文件的一小部分,实际应用中还需要考虑文件的安全性、完整性等问题。
相关问题
完善代码 do_upload_new.php (用于实现防护) <?php include_once "functions.php"; if(___________)//如果不存在 session start_session($expires); if(! isset($_SESSION['username'])) { exit('您没有权限访问此页面'); } if (!isset($_POST['upload'])) { exit('请选择需要上传的文件'); } if($_POST['path'] != 'uploads' && $_POST['path'] != 'face')/*判断 路径变量*/ { exit('路径错误'); } $target_path = 'c:/uploads/' . $_POST['path'];/*设置非 web 目录保存 文件*/ $uploaded_name = $_FILES['file']['name']; /*上传文件名*/ $temp = explode(".", $uploaded_name);/*以’.’为分隔符将字符串打散 为数组*/ $uploaded_type = ______; //end 函数获取文件后缀 $uploaded_size = $_FILES['file'][____];//$_FILES 函数获取文件大小 if($uploaded_size > 1000000) { exit('文件超过 1M 字节,上传失败'); } if(_________________________________/*strtolower()处理文件后缀*/ _________________________________ _________________________________ ) { exit('文件类型错误,上传失败'); } $fname = md5( time() . $uploaded_name ) . '.' . $uploaded_type;/* 对文件名进行 md5()处理,文件重命名*/ $target_path = $target_path . '/' . ________;//文件名 while(true) { if(!file_exists($target_path)) break; else { $fname = md5( time() . $uploaded_name ) . '.' . $uploaded_type; $target_path = $target_path . '/' . $fname; } } if(!move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) { echo '内部错误,上传失败'; } else { echo htmlspecialchars($uploaded_name) . ' 上传成功! 当前文件名 为' .$fname; } ?>
完善代码如下:
<?php
include_once "functions.php";
if(!session_id()) session_start(); //如果不存在 session,就开始一个新的 session
if(!isset($_SESSION['username'])) {
exit('您没有权限访问此页面');
}
if (!isset($_POST['upload'])) {
exit('请选择需要上传的文件');
}
if($_POST['path'] != 'uploads' && $_POST['path'] != 'face') {
exit('路径错误');
}
$target_path = 'c:/uploads/' . $_POST['path']; //设置非 web 目录保存文件
$uploaded_name = $_FILES['file']['name']; //获取上传文件名
$temp = explode(".", $uploaded_name); //以’.’为分隔符将字符串打散为数组
$uploaded_type = end($temp); //获取文件后缀
$uploaded_size = $_FILES['file']['size']; //获取文件大小
if($uploaded_size > 1000000) {
exit('文件超过 1M 字节,上传失败');
}
if(strtolower($uploaded_type) != 'jpg' && strtolower($uploaded_type) != 'jpeg' && strtolower($uploaded_type) != 'png') { //判断文件类型是否为图片
exit('文件类型错误,上传失败');
}
$fname = md5(time() . $uploaded_name) . '.' . $uploaded_type; //对文件名进行 md5()处理,文件重命名
$target_path = $target_path . '/' . $fname; //设置完整文件路径
while(true) {
if(!file_exists($target_path)) break;
else {
$fname = md5(time() . $uploaded_name) . '.' . $uploaded_type;
$target_path = $target_path . '/' . $fname;
}
}
if(!move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo '内部错误,上传失败';
} else {
echo htmlspecialchars($uploaded_name) . ' 上传成功! 当前文件名为' .$fname;
}
?>
$fname = sprintf('/tmp/%s.%s',$_POST['fileName'],$_POST['fileExt']); $data = file_get_contents($_FILES['file']['tmp_name']);
这段 PHP 代码的作用是将客户端上传的文件保存到服务器的临时目录中。
首先,代码使用 sprintf 函数将上传的文件名和扩展名拼接成完整的文件路径:
```
$fname = sprintf('/tmp/%s.%s',$_POST['fileName'],$_POST['fileExt']);
```
其中,$_POST['fileName'] 和 $_POST['fileExt'] 分别表示客户端提交的文件名和扩展名。
然后,代码使用 file_get_contents 函数读取上传文件的内容:
```
$data = file_get_contents($_FILES['file']['tmp_name']);
```
其中,$_FILES['file']['tmp_name'] 表示客户端上传的文件在服务器上的临时文件路径。
最终,可以使用 file_put_contents 函数将上传文件保存到指定的位置:
```
file_put_contents($fname, $data);
```
需要注意的是,这段代码没有对上传文件的类型、大小、真实性进行检查,因此存在安全风险。在实际应用中,需要对上传文件进行严格的验证和过滤。