vue+axios+php如何实现上传文件功能?


本文摘自PHP中文网,作者青灯夜游,侵删。

推荐:《PHP视频教程》

我们在做表单提交的时候,往往会碰到一些表单提交的需求,那vue的axios与上传文件碰撞后不会出现什么不一样的火花吗,听我一一道来:

首先,我们需要对写一个vue的axios的表单提交,由于本人用的是webpack,so代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<template lang="pug">

  p

    input(type="file", ref="yin")

    button(@click="submit()") 点击上传

</template>

<script>

  export default{

    methods: {

      submit(){

        let formdata = new FormData();

        formdata.append('file', this.$refs.yin.files[0]);

        this.$axios({

          url: 'http://localhost/php/file_upload/file_updata.php',

          method: 'post',

          data: formdata,

        }).then((res) => {

          console.log(res.data)

        })

      }

    }

  }

</script>

  用的是pug的模板,也可以换成HTML的,无伤大雅,主要看js逻辑代码,首先声明一个FormData的对象,然后在进行post传值,这个时候的url是我用wamp里面的一个PHP文件,文件如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<?php

/**

 * Created by PhpStorm.

 * User: DELL

 * Date: 2017/11/23

 * Time: 10:57

 */

header("Access-Control-Allow-Origin:*");

// 响应类型

header('Access-Control-Allow-Methods:POST');

// 响应头设置

header('Access-Control-Allow-Headers:x-requested-with, content-type');

header("Content-type: text/html; charset=utf-8");

$file = $_FILES["file"];

if ($file["error"] > 0) {

    echo "错误:" . $file["error"];

} else {

    $name = iconv('utf-8', 'gb2312', "upload/" . $file["name"]);

    echo "文件名称:" . $file["name"] . "</br>";

    echo "文件类型:" . $file["type"] . "</br>";

    echo "文件大小:" . ($file["size"] / 1024) . "K</br>";

    echo "文件临时存储的位置:" . $file["tmp_name"] . "</br>";

 

 

    //保存上传的文件

    if (file_exists("upload" . $file["name"])) {

        echo $file["name"] . "文件已经存在";

    } else {

        //如果目录不存在则将该文件上传

        if (move_uploaded_file($file['tmp_name'], $name)) {

            move_uploaded_file($file['tmp_name'], "upload/" . $file["name"]);

        }

    }

}

  

阅读剩余部分

相关阅读 >>

怎么用vue.js做异步请求

vue首页为什么会渲染两次?原因和解决方法介绍

vue有react native吗

如何解决vue中layui报错问题

网页设计css样式代码大全,快来收藏吧!

单独引入vue.js文件怎么写组件

深入了解jquery和vue的区别(附代码)

vuevue.set有几个参数

深入研究vue cli3

2021年值得收藏的17个vue 后台管理模板

更多相关阅读请进入《vue》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...