PHP前端开发

uniapp上传图片名字保持不变

百变鹏仔 4周前 (11-20) #uniapp
文章标签 上传图片

在uniapp中,我们经常会使用到上传图片的功能,但是默认情况下,上传图片的文件名会被重命名或者不同的平台会有不同的表现,这对于后端处理和前端展示都会带来不小的问题。所以,在开发中,我们往往需要保持上传的图片名字不变。

本文将介绍在uniapp中如何实现上传图片名字保持不变的方法。

一、前言

在uniapp中,图片上传主要使用uni.uploadFile() 的API接口。通过这个接口,我们可以上传图片到服务器。但是,uni.uploadFile() 会根据不同平台或者文件特殊命名规则给图片文件命名,导致我们无法很好地处理上传的图片。那么,在使用 uni.uploadFile() 时,如何保持上传图片的名字不变呢?

二、获取上传图片原始信息

我们可以通过uni.chooseImage() API接口选中图片时,获取图片的原始信息,取得文件名和后缀名。

uni.chooseImage({    count: 1,    success: function(res) {        uni.getImageInfo({            src: res.tempFilePaths[0],            success: function(infoRes) {                //文件名                var fileName = res.tempFilePaths[0].substring(res.tempFilePaths[0].lastIndexOf('/') + 1);                //后缀名                var extName = fileName.substring(fileName.lastIndexOf('.'));            }        });    }});

三、使用 formData 对象上传图片

之前我们使用uni.uploadFile()接口上传图片,但是,该接口的file参数只能接受文件路径,不能接收 FormData 对象。在 this.formData 中,我们可以创建 FormData 对象,将上传图片的文件名与文件数据一起上传。

uni.chooseImage({    count: 1,    success: function(res) {        uni.getImageInfo({            src: res.tempFilePaths[0],            success: function(infoRes) {                //文件名                var fileName = res.tempFilePaths[0].substring(res.tempFilePaths[0].lastIndexOf('/') + 1);                //后缀名                var extName = fileName.substring(fileName.lastIndexOf('.'));                // 将文件数据赋值到formData对象中                this.formData = new FormData();                this.formData.append('file', res.tempFiles[0].path, fileName + extName);                console.log('开始上传文件')                uni.uploadFile({                    url: '上传文件的url',                    filePath: res.tempFilePaths[0],                    name: 'file',                    formData: this.formData,                    success: function (res) {                        console.log(res);                    }                });            }        });    }});

通过以上方式,我们就可以保持上传图片的名字不变。

四、总结

在 uniapp 中上传图片,我们可以通过获取图片的原始信息来取得文件名和后缀名,然后再将文件名和数据一起上传。这样就可以解决由于不同平台或者特殊命名规则带来的问题,可以更好地处理上传的图片。