微信JSSDK多图片上传
微信JSSDK多图片上传
作为一名开发者,你可能已经遇到过这样的问题:在某些Android机型上,微信不支持网页上传图片。这种情况是由于这些机型的文件上传存在内存泄漏,而这会导致微信闪退,所以微信内置浏览器将文件上传屏蔽。这就导致这些机型的用户在使用微信浏览器访问网页时,无法正常上传图片。
问题分析
首先,我们需要了解一下为什么微信不支持多图片上传。根据微信官方的说明,部分Android机型的文件上传存在内存泄漏,这会导致微信闪退,所以微信内置浏览器将文件上传屏蔽。这意味着,如果我们想在这些机型上实现多图片上传,我们需要找到一种绕过这个限制的方法。
解决方案
为了解决这个问题,我们可以使用以下几种方法:
1. 使用微信自带的上传组件:微信提供了一个自带的上传组件,可以帮助我们实现多图片上传。这个组件可以在网页上直接使用,不需要额外的配置。
2. 使用第三方库:有很多第三方库可以帮助我们实现多图片上传,例如七牛云存储、阿里云存储等。这些库提供了一个简单的接口,可以让我们轻松地实现多图片上传。
3. 使用微信内置的文件管理器:微信内置有一个文件管理器,可以帮助我们实现多图片上传。这个方法需要在网页上添加一个特殊的标签,才能正常工作。
具体步骤
下面是具体的步骤:
使用微信自带的上传组件1. 在网页上添加以下代码:
```html
wx.config({
debug: false,
appId: 'YOUR_APP_ID',
timestamp:0,
nonceStr: '',
signature: '',
jsApiList: ['chooseImage', 'uploadImage']
});
document.getElementById('fileInput').addEventListener('change', function() {
var files = this.files;
for (var i =0; i < files.length; i++) {
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
wx.uploadImage({
localId: res.localIds[0],
server: 'YOUR_SERVER_URL',
isShowMessage: true,
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('选择图片失败');
}
});
}
});
document.getElementById('uploadButton').addEventListener('click', function() {
var files = document.getElementById('fileInput').files;
for (var i =0; i < files.length; i++) {
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
wx.uploadImage({
localId: res.localIds[0],
server: 'YOUR_SERVER_URL',
isShowMessage: true,
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('选择图片失败');
}
});
}
});
```
2. 在网页上添加以下代码:
```javascriptwx.ready(function() {
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
wx.uploadImage({
localId: res.localIds[0],
server: 'YOUR_SERVER_URL',
isShowMessage: true,
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('选择图片失败');
}
});
});
```
3. 在网页上添加以下代码:
```javascriptwx.ready(function() {
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
wx.uploadImage({
localId: res.localIds[0],
server: 'YOUR_SERVER_URL',
isShowMessage: true,
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('选择图片失败');
}
});
});
```
使用第三方库1. 在网页上添加以下代码:
```html
var qiniu = new Qiniu({
accessKey: 'YOUR_ACCESS_KEY',
secretKey: 'YOUR_SECRET_KEY'
});
document.getElementById('fileInput').addEventListener('change', function() {
var files = this.files;
for (var i =0; i < files.length; i++) {
qiniu.uploadFile({
file: files[i],
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
}
});
document.getElementById('uploadButton').addEventListener('click', function() {
var files = document.getElementById('fileInput').files;
for (var i =0; i < files.length; i++) {
qiniu.uploadFile({
file: files[i],
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
}
});
```
2. 在网页上添加以下代码:
```javascriptvar qiniu = new Qiniu({
accessKey: 'YOUR_ACCESS_KEY',
secretKey: 'YOUR_SECRET_KEY'
});
qiniu.uploadFile({
file: document.getElementById('fileInput').files[0],
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
```
3. 在网页上添加以下代码:
```javascriptvar qiniu = new Qiniu({
accessKey: 'YOUR_ACCESS_KEY',
secretKey: 'YOUR_SECRET_KEY'
});
qiniu.uploadFile({
file: document.getElementById('fileInput').files[0],
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
```
使用微信内置的文件管理器1. 在网页上添加以下代码:
```html
wx.config({
debug: false,
appId: 'YOUR_APP_ID',
timestamp:0,
nonceStr: '',
signature: '',
jsApiList: ['chooseImage', 'uploadImage']
});
document.getElementById('fileInput').addEventListener('change', function() {
var files = this.files;
for (var i =0; i < files.length; i++) {
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
wx.uploadImage({
localId: res.localIds[0],
server: 'YOUR_SERVER_URL',
isShowMessage: true,
success: function(res) {
console.log('上传成功');
},
fail: function(res) {
console.log('上传失败');
}
});
},
fail: function(res) {
console.log('选择图片失败');
}
});
}
});
document.getElementById