move_uploaded_file($file_tmp, $new_file_path)
时间: 2024-10-13 13:13:19 浏览: 42
`move_uploaded_file()` 函数是 PHP 中的一个内置函数,用于将通过 HTTP POST 方式上传到服务器临时目录 ($file_tmp) 的文件移动到指定的目标路径 ($new_file_path)。这个函数主要用于处理用户上传文件的安全操作,它会在源文件上传成功并通过安全检查后,将其正式保存到预期的位置。
当您需要从 `$_FILES` 超全局数组中获取并存储用户上传的文件时,通常会使用这个函数。例如:
```php
if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
$file_tmp = $_FILES['file']['tmp_name'];
$new_file_path = "uploads/" . basename($_FILES["file"]["name"]);
if (move_uploaded_file($file_tmp, $new_file_path)) {
echo "文件已成功上传至:" . $new_file_path;
} else {
echo "上传失败 :(";
}
}
```
相关问题
<?php $allow_ext = array('png','jpg','gif'); $file = $_FILES['file']['name']; $file_info = pathinfo($file); var_dump($file_info); $file_ext = $file_info['extension']; if(!in_array($file_ext, $allow_ext)){ exit("error extension"); } $news = time(); $filepath = './uploads/'; $newname = md5(md5($news)).'.'.$file_ext; $tmp_name=$_FILES['file']['tmp_name']; $filename=$filepath.$newname; if(move_uploaded_file($tmp_name,$filename)) { $content = file_get_contents($filename); $content = preg_replace('/<\?php|\?>/i', '_', $content); $content = preg_replace('/php/i', '', $content); $content = preg_replace('/eval/i', '_', $content); $content = preg_replace('/assert/i', '_', $content); $content = preg_replace('/ev/i', '_', $content); $content = preg_replace('/system/i', '_', $content); $content = preg_replace('/as/i', '_', $content); $content = preg_replace('/call/i', '_', $content); $content = preg_replace('/replace/i', '_', $content); $content = preg_replace('/func/i', '_', $content); file_put_contents($filename, $content); $data['success'] = 1; $data['message'] = 'æˆåŠŸ'; $data['url'] = $filename; }else{ $data['message']='ä¸Šä¼ å¤±è´¥!'; } echo json_encode($data); ?>
这段代码是一个 PHP 文件上传的示例。它首先定义了允许上传的文件扩展名数组 `$allow_ext`,然后通过 `$_FILES` 数组获取上传文件的原始名称,并使用 `pathinfo()` 函数获取文件信息。接下来,它将获取到的文件扩展名与允许的扩展名进行比较,如果不在允许的范围内,则输出 "error extension" 并终止程序。
如果文件扩展名允许上传,则会生成一个新的文件名 `$newname`,这里使用了时间戳和 MD5 哈希来生成唯一的新文件名,并将其保存在指定的文件夹路径 `$filepath` 中。
然后,它使用 `move_uploaded_file()` 函数将临时文件移动到指定的路径中。接下来,它会读取上传文件的内容,并使用一系列正则表达式替换操作来过滤一些敏感关键词(如 PHP 标签、eval、assert 等),并将过滤后的内容重新写入文件。
最后,它会将上传结果以 JSON 格式输出,包含成功标识 `success`、消息 `message` 和上传文件的 URL `url`。
需要注意的是,这段代码仅用于演示上传过程,并没有涉及其他安全性措施,例如对上传文件的类型、大小、目录权限等进行验证和限制。在实际应用中,需要根据具体需求和安全考虑添加相应的验证和过滤机制。
<?php require_once "db.php"; if (is_uploaded_file($_FILES['bookimage']['tmp_name'])) { $upfile = $_FILES["bookimage"]; $name = $upfile['name']; echo $upfile["tmp_name"]; $tmp_name = $upfile["tmp_name"];//上传文件的临时存放路径 move_uploaded_file($tmp_name, 'image/' . $name); $path = "http://127.0.0.1/untitled/".'image/' . $name; //将书籍信息加入bookinfo表 $link = getConnection(); $link->select_db("bookshop"); mysqli_set_charset($link,"utf8"); addbook($link,$path); $result = $link->query("select * from book_info"); $row = $result->fetch_object(); echo $row->bookimage; echo "<image src='".$row->bookimage."'/>"; //http://127.0.0.1:63342/untitled/ echo "上传成功"; } else { echo "您还没有上传文件"; }
这段代码是一个简单的 PHP 上传文件功能的实现。首先判断是否有文件上传,如果有,通过 $_FILES['bookimage'] 获取上传的文件信息。然后将文件保存到服务器的指定目录下,并将文件路径存储到数据库中。最后查询数据库中的文件路径并将其显示在页面上。如果没有上传文件,则输出提示信息。需要注意的是,这段代码的逻辑并不完整,需要根据实际需求进行改进。
阅读全文