以上代码不需要配置accessId
时间: 2024-04-19 08:30:08 浏览: 121
非常抱歉,我之前提供的代码片段没有包含对OSS的身份验证。在使用Katalon Studio从OSS下载文件夹时,您需要进行身份验证才能访问OSS资源。以下是一个示例脚本,包括了使用accessId和accessKey进行身份验证的步骤:
```groovy
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.ResponseBody
// 定义OSS地址和本地保存路径
def ossUrl = "https://your-oss-bucket-url/folder"
def localPath = "path/to/local/folder"
// 定义OSS的accessId和accessKey
def accessId = "your-access-id"
def accessKey = "your-access-key"
// 创建本地文件夹
new File(localPath).mkdirs()
// 创建OkHttpClient实例,并设置身份验证信息
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor { chain ->
Request originalRequest = chain.request()
Request.Builder builder = originalRequest.newBuilder()
.header("Authorization", "OSS " + accessId + ":" + accessKey)
Request newRequest = builder.build()
chain.proceed(newRequest)
}
.build()
// 获取文件夹列表
Request request = new Request.Builder()
.url(ossUrl)
.build()
ResponseBody responseBody = client.newCall(request).execute().body()
if (responseBody != null) {
String fileList = responseBody.string()
responseBody.close()
// 解析文件列表
String[] files = fileList.split("\\n")
// 下载文件夹中的文件
files.each { file ->
String fileName = file.substring(file.lastIndexOf("/") + 1)
Request fileRequest = new Request.Builder()
.url(ossUrl + "/" + fileName)
.build()
ResponseBody fileResponseBody = client.newCall(fileRequest).execute().body()
if (fileResponseBody != null) {
File targetFile = new File(localPath, fileName)
FileUtils.copyInputStreamToFile(fileResponseBody.byteStream(), targetFile)
fileResponseBody.close()
}
}
}
```
请将`"https://your-oss-bucket-url/folder"`替换为实际的OSS地址,将`"path/to/local/folder"`替换为您想要保存文件夹的本地路径,并将`"your-access-id"`和`"your-access-key"`替换为您的OSS访问凭证。这个脚本使用了OkHttp库来发送HTTP请求,并使用了Apache Commons IO库中的`FileUtils`类来复制文件流到本地文件。请确保已在Katalon Studio中导入这两个库,以便脚本能够正常运行。
阅读全文