在使用阿里云-对象存储 OSS-分片上传图片时
客户javascript是用
var client = new directup(json.msg);与OSS已经建立
但在使用函数
这种第三方的直接参考官方文档:https://help.aliyun.com/document_detail/31850.html
f12看控制台有报错吗?看网络有上传吗?
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
你好,可能需要更多的信息才能确定问题的原因。可以提供一些更具体的信息,例如:
以下是一个使用阿里云 OSS 分片上传图片的示例代码片段,假设 client
是直传客户端对象:
var multipartUpload = function (file, callback) {
var self = this;
var fileSize = file.size;
var key = file.name;
var uploadId;
var max_part_num = 10000;
var part_size = 5 * 1024 * 1024;
var partList = [];
var record = {
uploadId: uploadId,
partList: partList
};
var uploadCallback = {
onprogress: function (e) {
console.log('Progress:', e.loaded, '/', e.total);
},
onsuccess: function (result) {
console.log('Upload success:', result);
callback(null, result);
},
onerror: function (err) {
console.log('Upload error:', err);
callback(err, null);
}
};
self.initiateMultipartUpload({
Bucket: 'your-bucket-name',
Key: key
}, function (err, data) {
if (err) {
console.log(err);
return;
}
uploadId = data.UploadId;
record.uploadId = uploadId;
var parallelList = [];
var leftSize = fileSize;
var partNum = 0;
while (leftSize > 0) {
if (leftSize < part_size) {
part_size = leftSize;
}
var partParams = {
Bucket: 'your-bucket-name',
Key: key,
PartNumber: (partNum + 1),
UploadId: uploadId,
PartSize: part_size,
Body: file.slice(partNum * part_size, (partNum * part_size) + part_size),
Headers: {
'Cache-Control': 'max-age=2592000'
}
};
var parallelTask = {
task: function (partParams) {
return function (callback) {
client.uploadPart(partParams, uploadCallback, callback);
};
}(partParams),
partNum: partNum
};
parallelList.push(parallelTask);
partList[partNum] = null;
partNum++;
leftSize -= part_size;
if (partNum >= max_part_num) {
break;
}
}
async.parallelLimit(parallelList.map(function (x) {
return x.task;
}), Math.min(parallelList.length, 10), function (err) {
if (err) {
console.log(err);
return;
}
self.completeMultipartUpload({
Bucket: 'your-bucket-name',
Key: key,
UploadId: uploadId,
Parts: partList.filter(function (x) { return x !== null; })
}, function (err, data) {
if (err) {
console.log(err);
return;
}
uploadCallback.onsuccess(data);
});
});
});
};
这段代码演示了如何使用阿里云 OSS 的分片上传功能,其中的 client
对象是直传客户端对象。你可以参考这个例子检查你的代码,看看是否有类似的问题。如果还需要帮助,请提供更多信息。
如果我的回答解决了您的问题,请采纳!