找回密码
 立即注册
搜索

file.delete接口删除文件失败,返回错误码300

1
回复
831
查看
[复制链接]

46

主题

47

帖子

465

积分

 楼主| 2021-8-13 16:16:33 显示全部楼层 |阅读模式

现象描述

快应用中下载任务接口downloadtask.downloadFile下载的Bin文件使用file.delete接口删除,无法删除,出现报错提示“code= 300”。

问题代码如下:

click() {
this.download_task = downloadtask.downloadFile({
header: {
"host": "windspeed-drcn.dbankcdn.com"
},
url: "https://640aa0d6fddbf8651e2232aaf3162e67.cc.cdnhwc5.com/download/random2000.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125",/*非真实地址*/
success(res) {
console.log("Download success. resp = " + JSON.stringify(res))
},
fail(res) {
console.log("Download fail. resp = " + JSON.stringify(res))
}
})
this.download_task.onProgressUpdate(res => {
console.log("Download onProgressUpdate = " + JSON.stringify(res))
})
},
find() {
var that = this
file.list({
uri: "internal://mass/Download/",
success: function (data) {
console.log(JSON.stringify(data.fileList))
console.log(data.fileList[0].uri)
that.path = data.fileList[0].uri
},
fail: function (data, code) {
console.log("handling fail, code=" + code);
}
})
},
delete() {
file.delete({
uri: this.path,
success: function (data) {
console.log('handling success');
},
fail: function (data, code) {
console.log('handling fail, code = ' + code);
}
})
}

错误日志如下:

08-04 08:36:57.084 I/jsLog   (13195): Download onProgressUpdate = {"progress":100,"totalBytesWritten":2250,"totalBytesExpectedToWrite":2250}
08-04 08:36:57.091 I/jsLog   (13195): Download success. resp = {"filePath":"internal://mass/Download/4316495718641443.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125","header":{"X-Frame-Options":"SAMEORIGIN","Connection":"keep-alive","Set-Cookie":"AUTHSESSID=c42c5e68901b; HttpOnly;Secure;","Content-Length":"2250","Date":"Wed, 04 Aug 2021 00:36:54 GMT","Content-Type":"text/html"},"statusCode":200}
08-04 08:36:59.238 I/jsLog   (13195): [{"lastModifiedTime":1628037417000,"length":2250,"type":"file","uri":"internal://mass/Download/4316495718641443.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125"}]
08-04 08:36:59.238 I/jsLog   (13195): internal://mass/Download/4316495718641443.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125
08-04 08:37:01.205 I/jsLog   (13195): handling fail, code=300


回复

使用道具 举报

23

主题

142

帖子

825

积分

2021-8-13 16:36:00 显示全部楼层

问题分析

上述代码实现了文件下载、查询、删除的能力。

  • click():实现文件下载能力,下载后的文件存在mass分区。

  • find():在mass分区查找文件,并将某文件路径赋值给页面变量path。

  • delete():删除path路径的文件。

代码中downloadtask.downloadFile()没有填写fileName字段,快应用引擎会默认从网络请求或url中获取文件名。

此时在success回调中返回的字段filePath中文件名为“random2000.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125”,可以看出文件名中含有多个特殊字符。而项目中所有文件需按照规范进行命名:文件名只能包含字母、数字、点、下划线、中划线、小括号,不能包含".."、"./"等字符,文件名长度不能超过300个字符。

file.delete接口删除文件时需要填入文件路径,很明显,上述下载的文件名中有“?”和“=”不符合要求,所以引擎校验不通过,会返回300错误码。

解决方法

在downloadtask.downloadFile接口下载时加上filename参数,对下载文件重命名。

代码如下:

click() {
this.download_task = downloadtask.downloadFile({
header: {
"host": "windspeed-drcn.dbankcdn.com"
},
url: "https://640aa0d6fddbf8651e2232aaf3162e67.cc.cdnhwc5.com/download/random2000.bin?auth_key=1627344862-6B5A47E8B8FF40E38021DEAA14E2C5FD-0-519320d987b2717bd7b35a84ad193125",/*非真实地址*/
filename: "test.bin", //对下载文件进行重命名
success(res) {
console.log("Download success. resp = " + JSON.stringify(res))
},
fail(res) {
console.log("Download fail. resp = " + JSON.stringify(res))
}
})
this.download_task.onProgressUpdate(res => {
console.log("Download onProgressUpdate = " + JSON.stringify(res))
})
},

正确日志如下:

08-04 08:37:52.823 I/jsLog   (12036): Download onProgressUpdate = {"progress":100,"totalBytesWritten":2250,"totalBytesExpectedToWrite":2250}
08-04 08:37:52.829 I/jsLog   (12036): Download success. resp = {"filePath":"internal://mass/Download/test.bin","header":{"X-Frame-Options":"SAMEORIGIN","Connection":"keep-alive","Set-Cookie":"AUTHSESSID=e347f58b1572; HttpOnly;Secure;","Content-Length":"2250","Date":"Wed, 04 Aug 2021 00:37:50 GMT","Content-Type":"text/html"},"statusCode":200}
08-04 08:37:54.638 I/jsLog   (12036): [{"lastModifiedTime":1628037472000,"length":2250,"type":"file","uri":"internal://mass/Download/test.bin"}]
08-04 08:37:54.638 I/jsLog   (12036): internal://mass/Download/test.bin
08-04 08:37:56.023 I/jsLog   (12036): handling success


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册