IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php原生上传件到服务器代码示例Demo(适用Laravel) -> 正文阅读

[PHP知识库]php原生上传件到服务器代码示例Demo(适用Laravel)

php原生上传件到服务器代码示例Demo(适用Laravel)


适用情景

提示:此Demo也适用Laravel;

例如:例如:网页、接口想PHP发送文件,PHP接收文件存到到服务器自定义目录中;


代码示例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2022/4/26
 * Time: 9:49
 */

namespace App\Services;

/**
 * PHP原生上传文件
 * Class UploadFiles
 * @package App\Services
 */
class UploadFiles
{
    /**
     * 上传单图
     * @param $file $_FILES文件对象
     * @param $file_dir 文件最终保存的目录('/upload/2022_04_26/')
     */
     public function uploadFileOne($file,$file_dir){
        try{
            $file_dir = trim(trim($file_dir,'.'),'/') .'/';//为了同意路径格式,防止因开头/不止一次导致的目录不正确问题

            //检测目录(文件夹)是否还没创建
            if (!is_dir($file_dir)){
                $mkdir_file_dir = mkdir($file_dir, 0777,true);   //在指定目录下建立一个文件夹,并设定文件夹的权限
            }

            //设置默认返回信息
            $res = [
                'code'=>500,
                'msg'=>''
            ];

            //判断需要上传的文件是否存在
            if(!$file['name']){
                $res['msg'] = '请选择需要上传文件';
                return $res;
            }

            //判断上传是否出在错误码
            if ($file['error'] > 0){
                switch ($file['error']){
                    case 1:
                        $res['msg'] = "文件大小超过PHP.ini中的文件限制!";
                        break;
                    case 2:
                        $res['msg'] = "文件大小超过了浏览器限制!";
                        break;
                    case 3:
                        $res['msg'] = "文件部分被上传!";
                        break;
                    case 4:
                        $res['msg'] = "没有找到要上传的文件!";
                        break;
                    case 5:
                        $res['msg'] = "服务器临时文件夹丢失,请重新上传!";
                        break;
                    case 6:
                        $res['msg'] = "文件写入到临时文件夹出错!";
                        break;
                }
                return $res;
            }

            $file['name'] = date('YmdHis', time()) . $file['name'];   //为文件重新命名,避免重复
            if (!file_exists($file_dir . $file['name'])) {
                $name_arr = explode('.',$file['name']);//将原文件名打散扯那个数组,利用end()获取数组后一个元素得到文件的后缀
                $path = $file_dir . time() . rand(100,999) .'.'. end($name_arr);//拼接好最终上传文件后的目录(并修改文件名)

                //将要上传的文件移动到指定的服务器目录中
                if(move_uploaded_file($file['tmp_name'], $path)){
                    $res['code'] = 200;
                    $res['msg'] = 'success';
                    $res['url'] = $path;
                    return $res;
                }else{
                    $res['msg'] = '文件不存在';
                    return $res;
                }

            }else{
                $res['msg'] = '您上传的文件已经存在';
                return $res;
            }
        }catch (\Exception $exception){
            dd($exception->getMessage());
        }
    }

	/**
     * 删除单个文件
     * @param (string) $path 目标文件的保存路径(例:img/2022/ccc.png)
     */
    public function deleteFileOne($path){
        if(file_exists($path)){//判断文件是否存在
            chmod($path,0777);//给目标文件权限
            if (unlink($path)) {//执行删除
                $res['code'] = 200;
                $res['msg'] = 'success';
                $res['url'] = $path;
                return $res;
            } else {
                $res['msg'] = '删除失败';
                return $res;
            }
        }else{
            $res['msg'] = '文件不存在';
            return $res;
        }
    }
}

效果图1:
在这里插入图片描述

效果图2:
在这里插入图片描述


总结

上传文件核心就是使用**$_FILES超全局变量获取文件并用move_uploaded_file()函数**将上传的文件移动到服务器指定的目录中。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:30:26  更:2022-05-01 15:30:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 19:47:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码