当前位置:首页 » 文件管理 » vue2上传文件

vue2上传文件

发布时间: 2023-03-04 17:40:33

① 如何在Vue 2中处理文件上传

按需组件引入吧,这样会减少不必要的css,当然你每个组件的css要独立出来,而且如果使用webpack 的vue-loader处理 即使重复引用同一个组件css也是同用一份,不会额外的复制多个

② vue使用input标签 type='file'上传文件

1、html中

2、js

3、注意

该api接口需要单独配置请求头headers

4、成功后会返回图片的地址,就ok了

如果你做的是上传头像的功能,并且要对图片进行裁剪,推荐个 不错的插件

③ vue2.x,element-ui 中上传图片组件(图片查看,已有图片渲染)

1、基本标签结构

<el-upload name="picture" 

            :action="'/api/image/upload?imageType=xxx" 

            accept=".jpg, .png"      

            list-type="picture-card" 

           :limit="1"    

           :file-list="filelists"

            :on-exceed="onExceed" 

            :before-upload="beforeUpload"  

            :on-preview="handlePictureCardPreview"      

            :on-success="imagesuccess"   

            :on-remove="handleRemove">

            <i class="el-icon-plus"></i>  

 </el-upload>

<!--预览-->

<el-dialog :visible.sync="imgPreviewVisible" size="full" :modal="false" title="预览">

                <img width="100%" :src="imagePreviewUrl" alt="">

</el-dialog>

方法示例:

onExceed(files, fileList) { 

                this.$message({

                        type: 'info',

                        message: '最多只能上传一个图片',  

                        ration: 6000

                });

},

beforeUpload(file) {

                const isJPG = file.type === 'image/jpeg'  

                const isGIF = file.type === 'image/gif'  

                const isPNG = file.type === 'image/png'

                const isBMP = file.type === 'image/bmp' 

                const imgSizeLimit= file.size  < 1*1024*1024;

                if (!isJPG && !isGIF && !isPNG && !isBMP) {

                     this.$message.error('上传图片必须是JPG/GIF/PNG/BMP 格式!'); 

                }

                if (!imgSizeLimit) { 

                        this.$message.error('上传图片大小不能超过 1MB!');

                }

                return (isJPG || isBMP || isGIF || isPNG) && imgSizeLimit;                                                                                                                           }, 

handlePictureCardPreview:function(file){

        //todo

 },

imagesuccess:function(response, file, fileList){

         //todo

         this.filelists  = [];

          this.filelists  = [file]

 },

handleRemove:function(file, fileList){

           //todo

 },


2、action为后台上传图片接口

      file-list为文件列表

      limit为设置的可上传文件的最大个数

      onExceed上传的文件个数超出设定时触发的函数,参数为上传的文件file和文件列表 filelists  

      beforeUpload文件上传前执行,参数为上传的文件file,如果返回false或者返回Primary且被reject,则停止上传

      handlePictureCardPreview图片预览时触发,参数为上传的文件file,

      imagesuccess图片上传成功时触发参数response, file, filelists  

      handleRemove移除图片时触发,参数为file, filelists  

3、已有图片渲染问题:

自己在实际开发过程中,会遇到编辑情况,并且已经存在一张图片,想要放到图片组件中,可以调用组件里声明的方法。

由于是新手,组件使用不熟练,所以我将图片的显示与上传等操作分离,单独自己去展示,上传时再使用组件上传,使用组件的:show-file-list="false"属性来隐藏组件自带的图片展示功能。

后来发现自己可以自己初始化filelists列表,来使已存在的图片文件放入组件中,放入的对象当然时文件,但是我后台只有图片地址,如何拼出一个file格式对象来呢?通过debug,我发现上传的文件格式对象有好多属性,当然,存在url这个属性就可以通过组件进行展示。最简单的一种方式就是直接创建一个只有一个url属性的对象var file = {     url:this.showDetailForm.profilePhotoPath     }    this.filelists.push(file)  然后push到文件列表,就可以在组件中进行渲染,对图片的操作可以使用声明的方法+表单属性来实现业务的全过程(当然,这样渲染的文件只有url,没有其他属性,比如文件大小,涉及到其他属性的函数都没办法调用)

④ vue el-upload上传文件方法 详细解答 action 和 http-request两种方式

包括action 和 http-request两种方式

上传成功回调方法 绑定 handleSuccess 方法

自定义上传相比action上传,扩展性更强,当项目里上传需求较多,且连接不同接口地址时,配置uploadheaders 配置很多显然不太优雅。

注意:自定义上传时,需要对该上传设置一下请求头 。 在拦截器里设置请求头

自定义上传的触发方式 ,点击确定时在 importUser 里执行,执行这句即是执行uploadFile方法

注意: formdata打印不出来,实际有值

⑤ Vue 上传图片到七牛云实用攻略

vue 一般采用element  的upload 上传图片/文件。

首先,设定参数

参考Element  upload  文档

其次,如图所示,重点在于domain和qiniuaddr两个参数!     参考 七牛云存储图片域名文档

然后  上传一定要先获取到七牛云token!我是采用axios  post获取。

接着,把返回的 file.name赋值给 key

this.QiNiuYun.key = `name_${file.name}`;

如图 上传成功/错误处理 函数

大功告成!

补充:

1.    this.uploadImageUrl  这个变量实际上是  图片真正的URL-----https地址!!!

2.    该方法是针对单图上传,如果想多图    将data 内的参数   limit:1   修改为需要的图片数量    !!!

3.     注意!当后台需要你传递多张图片的url时,可采用 此方法!!!

 //拼接 url

                if(this.uploadImageList===''){

                    this.uploadImageList= this.uploadImageUrl;

                }else{

                    this.uploadImageList=this.uploadImageList+';'+ this.uploadImageUrl;

                }

热点内容
如何查看攻击过服务器的ip地址 发布:2025-05-19 13:45:44 浏览:940
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:379
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:613
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:945
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:742
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511