Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

如何自定义文件路径 #68

Open
NaiShengYu opened this issue Oct 15, 2024 · 1 comment
Open

如何自定义文件路径 #68

NaiShengYu opened this issue Oct 15, 2024 · 1 comment

Comments

@NaiShengYu
Copy link

我想设置上传后在阿里云盘的路径,设置成 folderId: "root/test", 就报错了
NetworkSystemError
▿ httpError : 3 elements
- statusCode : 400
▿ data : 256 bytes
- count : 256
▿ pointer : 0x0000000111bfd146
- pointerValue : 4592750918
- response : <NSHTTPURLResponse: 0x281f03820> { URL: https://openapi.alipan.com/adrive/v1.0/openFile/create } { Status Code: 400, Headers {
"Content-Length" = (
256
);
"Content-Type" = (
"application/json"
);
Date = (
"Tue, 15 Oct 2024 05:25:21 GMT"
);
Server = (
"istio-envoy"
);
Vary = (
"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"
);
"req-arrive-time" = (
1728969921587
);
"req-cost-time" = (
72
);
"resp-start-time" = (
1728969921660
);
"x-canary" = (
"product=adrive,uid=d0cda0dc2f804745a6687bd082c86510"
);
"x-envoy-upstream-service-time" = (
60
);
"x-request-id" = (
"c6e29d84-855c-4c87-b04f-268261364242, 0a00701217289699215828419ee9a0"
);
} }

下面是我代码
@objc public func uploadFile(withURL url: URL, fileName:String,completion: @escaping (String, NSError?) -> Void) {
Task {
do {
let driveInfo = try await client
.authorize()
.send(AliyunpanScope.User.GetDriveInfo())

            let driveId = driveInfo.default_drive_id
            
            let file = try await client.uploader
                .upload(
                    fileURL: url,
                    fileName: fileName,
                    driveId: driveId,
                    folderId: "root/test",
                    useProof: false)
            completion(file.description, nil)
        } catch {
            completion("", error as NSError)

        }
    }
}
@NaiShengYu
Copy link
Author

已解决需要自己手动创建文件夹

private func findOrCreateFolder(driveId: String, parentFileId: String) async throws -> String {
    // 创建获取文件列表的请求
    let request = AliyunpanFileScope.GetFileList.Request(
        drive_id: driveId,
        parent_file_id: parentFileId,
        limit: 100,
        type: .folder
    )
    let getFileListCommand = AliyunpanFileScope.GetFileList(request)
    
    // 获取文件列表
    let response = try await client.authorize().send(getFileListCommand)
    
    // 查找指定文件夹
    for file in response.items {
        if file.name == "test" {
            return file.file_id // 如果找到,返回文件夹 ID
        }
    }
    
    // 如果没有找到,创建文件夹
    let createFolderRequest = AliyunpanFileScope.CreateFile.Request(
        drive_id: driveId,
        parent_file_id: parentFileId,
        name: "test",
        type: .folder,
        check_name_mode: .ignore
    )
    let createFolderCommand = AliyunpanFileScope.CreateFile(createFolderRequest)
    let createFolderResponse = try await client.authorize().send(createFolderCommand)
    
    return createFolderResponse.file_id // 返回新创建的文件夹 ID
}

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant