渐行渐远
渐行渐远
  • 发布:2019-02-04 12:28
  • 更新:2023-05-02 18:24
  • 阅读:4077

uni.upload上传图片,服务器端接受的文件名没有后缀

分类:uni-app

uni.upload上传图片,服务器端接受的文件名没有后缀,无法判断是jpg还是png图片。

this.imageList.forEach(function(v) {  
                    console.log(_this.title)  
                    //上传  
                    uni.uploadFile({  
                        url:"http://localhost/upload/index.php",  
                        fileType:"image",  
                        filePath:v,  
                        name:'file',  
                        formData:{  
                            "title":_this.title,  
                            "date":_this.date,  
                        },  
                        success:function(e){  
                            if(e.statusCode == 200) {  
                                console.log(e.data)  
                            }  
                        }  
                    });  
                });
2019-02-04 12:28 负责人:无 分享
已邀请:
渐行渐远

渐行渐远 (作者)

有人吗

  • wxlcxy

    你可以使用返回的另一个参数来判断的。如你选择照片后还有一个参数叫做tempFiles你在他里面可以看到图片的名字和路径。那个名字可以判断图片的类型好像。你可以用这个

    2020-08-08 11:46

渐行渐远

渐行渐远 (作者)

还有个问题,就是我的hbuildex无限提醒要升级,但是下载完了还是这个版本,还提示升级

1***@qq.com

1***@qq.com - 人称大神

这个让服务端解决就好了
服务端自己判断是什么文件

  • 渐行渐远 (作者)

    这个没法判断吧,一般不是前端的数据传过去都是带后缀的吗

    2019-02-22 21:07

  • 1***@qq.com

    回复 渐行渐远: 服务端可以自己检测文件头

    2019-03-11 20:59

1***@qq.com

1***@qq.com

我也遇到这个坑了,是uni.uploadFile方法漏传了2个必填项

详情看这个链接,https://blog.csdn.net/qq_39246667/article/details/123062522?spm=1001.2014.3001.5502

1***@qq.com

1***@qq.com

uni.uploadFile 这个函数在h5上传的时候有巨坑,无法自定义上传文件的后缀,而且会自动补充一个不带后缀的文件名,我使用axios重写了blob链接上传的逻辑才解决,以下是我的代码,请大家参考:

uploadFile(url, filePath, data) {    
        let token = uni.getStorageSync('token');    
        return new Promise((resolve, reject) => {    
            const blobUrl = filePath    
            // 通过XMLHttpRequest对象将Blob链接转换为Blob对象    
            const xhr = new XMLHttpRequest();    
            xhr.open('GET', blobUrl);    
            xhr.responseType = 'blob';    
            xhr.onload = () => {    
                var blob = xhr.response;    
                var ext = blob.type.split('/').pop(); // 获取文件的后缀    
                const file = new File([xhr.response], 'filename.'+ext, {type: blob.type});    

                // 创建FormData对象并将文件和其他参数添加到其中    
                const formData = new FormData();    
                formData.append('file', file);    

                Object.keys(data).forEach(key => {    
                    console.log(key, data[key]);    
                    formData.append(key, data[key]);    
                });    

                // 使用axios上传文件    
                axios.post(url, formData, {    
                    headers: {    
                        'Token'      : token,    
                        'Content-Type': 'multipart/form-data'    
                    }    
                }).then(response => {    
                    resolve(response.data)    
                }).catch(error => {    
                    reject(error)    
                });    
            };    
            xhr.send();    
        })    
    },
  • 4***@qq.com

    url, filePath, data这三个数据的字段能发一下吗 谢谢

    2023-12-12 11:24

要回复问题请先登录注册