【PHP开发工程师详细讲解分析】——网站注册账号(头像的上传操作),让自己喜欢的头像更换畅通无阻

本文主要是介绍【PHP开发工程师详细讲解分析】——网站注册账号(头像的上传操作),让自己喜欢的头像更换畅通无阻,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发

🅰

在这里插入图片描述


文章目录

    • 🅰
    • 前言
    • 🎶一、 创建文件上传表单以及数据库和视图操作
      • 🐤(1)对数据库中添加字段
      • 🐤(2)创建添加数据的表单和路由
      • 🐤(3)创建视图并添加csrf token
    • 🎶二、处理文件上传请求
    • 🎶三、文件验证
    • 🎶四、存储上传的文件
        • 结束语🥇


前言

  文件上传是许多 Web 应用程序中常见的功能之一,它允许用户将文件从本地计算机上传到服务器上。在使用 Laravel 框架构建 Web 应用程序时,实现文件上传功能非常简单且方便。Laravel 提供了强大的文件上传功能,使开发人员能够轻松地处理文件上传,并且提供了良好的安全性和便利性。

  本教程将向您展示如何使用 Laravel 框架实现文件上传操作。我们将从设置环境开始,逐步介绍如何创建文件上传表单、处理文件上传请求,并对上传的文件进行验证和存储。同时,我们还将探讨如何处理上传文件的各种情况,如文件类型验证、文件大小限制等。

通过本教程,您将学习到以下内容:

  • 如何配置 Laravel 以允许文件上传;
  • 如何创建包含文件上传字段的表单;
  • 如何处理上传的文件并进行验证;
  • 如何将上传的文件存储到服务器;
  • 如何处理文件上传过程中可能出现的异常情况。

  无论您是初学者还是有经验的 Laravel 开发人员,本教程都将为您提供足够的信息和指导,帮助您轻松地实现文件上传功能并加深对 Laravel 框架的理解。


🎶一、 创建文件上传表单以及数据库和视图操作


🐤(1)对数据库中添加字段

alter table 'member'
add column'avatat' varchar(100) character set utf8_general_ci NOT NULL
after 'email'

如果代码不能添加手动添加即可,效果一致

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

🐤(2)创建添加数据的表单和路由

1.添加路由:/home/wj
在这里插入图片描述

2.视图的方式法
在这里插入图片描述

3.表单代码图:

<!DOCTYPE html>
<html lang="en">
<head>    <meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><link rel="stylesheet" href="css/weui.css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title>
</head>
<body><form method="post" action="" enctype="multipart/form-data">
<p>姓名:<input type="text" name='name' value="" placeholder="请输入名字"></p>
<p>年龄:<input type="text" name='age' value="" placeholder="请输入年龄"></p>
<p>邮箱:<input type="text" name='email' value="" placeholder="请输入邮箱"></p>
<p>头像:<input type="file" name='avatar'></p><input type="submit" value="提交">
</form>
</body>
</html>

表单效果图如下:
在这里插入图片描述

🐤(3)创建视图并添加csrf token

回顾:要想表单能够上传(此处不考虑异步方式),则表单应该具备哪些要求?
  a.具有from标签,method必须为post,必须具备enctype属性;
  b.至少有一个input类型为file类型;
  c.得具备一个提交按钮;

在这里插入图片描述


🎶二、处理文件上传请求


1.接收上传的文件:
  当用户通过表单提交文件上传请求时,Laravel 控制器负责接收这些请求。您可以在控制器方法中使用请求对象(Request Object)来获取上传的文件数据。通常,上传的文件会作为请求对象的一个属性,您可以通过 $request->file(‘file’) 方法来访问上传的文件。

2.验证上传的文件:
  一旦接收到上传的文件,通常会进行一些验证以确保上传的文件符合预期。例如,您可以验证文件的类型、大小、扩展名等。Laravel 提供了方便的文件验证功能,您可以使用 Validator 类来轻松实现文件验证。

3.保存上传的文件:
  一旦文件上传并通过验证,您可以将文件保存到服务器上的指定位置。通常情况下,您会将上传的文件保存在存储目录中,例如 storage/app/public 目录下。您可以使用 Laravel 提供的文件存储功能来轻松地保存文件,例如使用 store() 方法。

4.返回响应:
  处理文件上传请求后,通常会向用户返回适当的响应,以告知用户文件上传的结果。这可能包括成功上传的消息、错误消息或者其他相关信息。您可以在控制器方法中根据上传结果返回不同的响应。

if($request->post()){//使用post提交方式进行操作
}

🎶三、文件验证


1.文件类型验证:
  Laravel 提供了丰富的文件类型验证功能,您可以轻松验证上传的文件类型是否符合预期。通过在控制器中使用 Validator 类的规则,如 mimes 规则,可以指定允许上传的文件类型,以确保用户只能上传指定类型的文件。例如,您可以验证文件是否是图片、视频、文档等。

2.文件大小验证:
  除了文件类型之外,有时还需要验证上传文件的大小是否符合预期。Laravel 允许您指定文件的最大大小,以限制用户上传过大的文件。通过在验证规则中使用 max 规则,您可以指定文件的最大大小,确保上传的文件不超过指定的大小限制。

3.文件名验证:
  在某些情况下,您可能需要验证上传文件的文件名是否符合特定的格式或规则。例如,您可以验证文件名是否包含特定的字符、长度是否符合要求等。Laravel 提供了灵活的验证规则,可以帮助您实现对文件名的验证。
在这里插入图片描述
更多的方法请访问:https://laravelacademy.org/post/22371

思路:
a.先去判断文件是否正常存在
b.获取相关的信息(可选)
c.保存文件(其实就是移动文件到新的目录)


🎶四、存储上传的文件


1.指定存储位置:
  在存储上传的文件之前,首先需要确定文件应该存储在哪个位置。Laravel 提供了一个灵活的文件存储系统,允许您定义多个存储磁盘,并根据需求将文件保存到不同的存储位置。您可以配置 filesystems.php 配置文件中的磁盘设置,以指定文件的存储位置。

2.保存文件:
  一旦确定了文件的存储位置,您可以使用 Laravel 提供的文件存储 API 轻松地将上传的文件保存到指定的存储位置。通过使用 Storage facade 或 Storage 实例的方法,如 put、store 等,您可以轻松地保存文件到指定的磁盘和路径。

use Illuminate\Support\Facades\Storage;
// 保存文件到 “public” 磁盘的 “images” 目录
Storage::disk(‘public’)->put(‘images/filename.jpg’, $fileContents);

3.生成文件路径和URL:
  存储文件后,通常需要获取文件的路径或 URL,以便后续访问或显示文件。Laravel 提供了方便的方法来生成文件的访问路径和 URL,例如 Storage::url 方法可以为存储的文件生成公开可访问的 URL。

$url = Storage::url(‘images/filename.jpg’);

4.处理文件系统驱动:
  Laravel 支持多种文件系统驱动,包括本地文件系统、Amazon S3、Rackspace 等。这使得您可以根据应用程序的需求选择合适的文件存储解决方案,并轻松地切换不同的文件系统驱动。

(1)创建上传文件保存路径
在这里插入图片描述

关于项目中使用路径的说明:
如果路径是给PHP代码使用的,则路径建议“./”形式;如果路径是给浏览器使用的则建议使用"/"形式。

代码实现以及代码解析:

public function wj(Request $request)
{if($request->post()){//上传文件//判断文件是否正确if($request->hasFile('avatar')&& $request -> file('avatar') -> isValid()){//获取文件的原始内容//getClientOriginalName原始的名称// dd($request->file('avatar') ->getClientOriginalName());//time()时间戳   后缀$path=md5(time() . rand(100000,999999)). '.' .$request->file('avatar')->getClientOriginalExtension();$request->file('avatar') ->move('./uploads',$path);//获取全部的数据$data=$request->all();//将路径添加到数组中$data['avatar']='./uploads/'. $path;$db=DB::table('member');$rst=$db->insert(['name' => $data['name'],'age' => $data['age'],'email' => $data['email'],'avatar' => $data['avatar'],]);var_dump($rst);}}else{//展示一个视图return view("home/wj");}

以将文件传输到文件夹中:
在这里插入图片描述
将图片以导入数据库:
在这里插入图片描述

最后可以通过查询将图片展现到视图上,便可以实现头像的显示

结束语🥇

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

这篇关于【PHP开发工程师详细讲解分析】——网站注册账号(头像的上传操作),让自己喜欢的头像更换畅通无阻的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931549

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者