VUE+axios+php实现图片上传

 更新时间:2022年08月15日 11:10:56   作者:发量堪忧的小伙子  
这篇文章主要为大家详细介绍了VUE+axios+php实现图片上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了VUE+axios+php实现图片上传的具体代码,供大家参考,具体内容如下

前端部分

执行函数,注意file那有个await,获取到文件数据后,装在FormData里面,然后调用下文axios的uploadFile

async uploadFiles() {
      let inputObj = document.createElement("input");
      let file = await new Promise((res) => {
        inputObj.setAttribute("id", "file");
        inputObj.setAttribute("type", "file");
        inputObj.setAttribute("name", "file");
        inputObj.setAttribute("style", "visibility:hidden");
        document.body.appendChild(inputObj);
        inputObj.click();

        document.querySelector("#file").addEventListener("change", (e) => {
          console.log(e.target.files);
          res(e.target.files)
        });
      });

      let formdata = new FormData()
      formdata.append('myFile', file[0])

      await this._http.uploadFile(formdata).then(console.log);
      document.body.removeChild(inputObj)
    },

http请求集中管理

async uploadFile(file) {
    return axios.post(`/Upload.php`,file,{
      headers: {"Content-Type": "multipart/form-data"}
    })
  }

php后端部分

接收参数,调用uploadFile

<?php
header('content-type:text/html;charset=utf-8');
$fileInfo=$_FILES["myFile"];
$maxSize=10485760;//10M,10*1024*1024
$allowExt=array('jpeg','jpg','png','tif');
$path="uploads";
include_once 'UploadFile.php';

uploadFile($fileInfo, $path, $allowExt, $maxSize);

封装uploadFile函数

<?php
function uploadFile($fileInfo, $path, $allowExt, $maxSize)
{
  $filename = $fileInfo["name"];
  $tmp_name = $fileInfo["tmp_name"];
  $size = $fileInfo["size"];
  $error = $fileInfo["error"];
  $type = $fileInfo["type"];
  //服务器端设定限制
  $ext = pathinfo($filename, PATHINFO_EXTENSION);
  //目的信息
  if (!file_exists($path)) {
    mkdir($path, 0777, true);
    chmod($path, 0777);
  }
  $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext;
  $destination = $path . "/" . $uniName;
  if ($error == 0) {
    if ($size > $maxSize) {
      exit("上传文件过大!");
    }
    if (!in_array($ext, $allowExt)) {
      exit("非法文件类型");
    }
    if (!is_uploaded_file($tmp_name)) {
      exit("上传方式有误,请使用post方式");
    }
    //判断是否为真实图片(防止伪装成图片的病毒一类的
    if (!getimagesize($tmp_name)) { //getimagesize真实返回数组,否则返回false
      exit("不是真正的图片类型");
    }
    if (@move_uploaded_file($tmp_name, $destination)) { //@错误抑制符,不让用户看到警告
      echo "文件" . $filename . "上传成功!";
    } else {
      echo "文件" . $filename . "上传失败!";
    }
  } else {
    switch ($error) {
      case 1:
        echo "超过了上传文件的最大值,请上传2M以下文件";
        break;
      case 2:
        echo "上传文件过多,请一次上传20个及以下文件!";
        break;
      case 3:
        echo "文件并未完全上传,请再次尝试!";
        break;
      case 4:
        echo "未选择上传文件!";
        break;
      case 7:
        echo "没有临时文件夹";
        break;
    }
  }
  return $destination;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 几个你不知道的技巧助你写出更优雅的vue.js代码

    几个你不知道的技巧助你写出更优雅的vue.js代码

    本文参考自油管上某个国外大神的公开演讲视频,学习了一下觉得很不错,所以在项目中也使用了这些不错的技巧。趁周末有空,写个博客记录一下
    2018-06-06
  • 浅谈element关于table拖拽排序问题

    浅谈element关于table拖拽排序问题

    本文主要介绍了element关于table拖拽排序问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • vue element封装form表单的实现

    vue element封装form表单的实现

    本文主要介绍了vue element封装form表单的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 利用Vue3的Teleport实现模态对话框功能

    利用Vue3的Teleport实现模态对话框功能

    在前端开发中,模态对话框是一种常见的用户交互方式,它能够有效地提示用户、收集信息或确认操作,随着现代框架的演进,Vue 3 的出现为我们提供了更便捷、高效的方式来处理复杂的界面布局,今天,我们将深入探讨如何利用 Vue 3 的新特性 Teleport 来实现模态对话框
    2025-02-02
  • vue-cli 关闭热更新操作

    vue-cli 关闭热更新操作

    这篇文章主要介绍了vue-cli 关闭热更新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Vue3 去除 vue warn 及生产环境去除console.log的方法

    Vue3 去除 vue warn 及生产环境去除console.log的方法

    这篇文章主要介绍了Vue3 去除 vue warn 及生产环境去除console.log的方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Vite创建项目的实现步骤

    Vite创建项目的实现步骤

    随着 Vite2 的发布并日趋稳定,现在越来越多的项目开始尝试使用它。本文我们就介绍了Vite创建项目的实现步骤,感兴趣的可以了解一下
    2021-07-07
  • 详解vuejs中执行npm run dev出现页面cannot GET/问题

    详解vuejs中执行npm run dev出现页面cannot GET/问题

    这篇文章主要介绍了详解vuejs中执行npm run dev出现页面cannot GET/问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • VueX模块的具体使用(小白教程)

    VueX模块的具体使用(小白教程)

    这篇文章主要介绍了VueX模块的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Vue 3.x+axios跨域方案的踩坑指南

    Vue 3.x+axios跨域方案的踩坑指南

    这篇文章主要给大家介绍了关于Vue 3.x+axios跨域方案的踩坑指南,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue 3.x具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论