gpt4 book ai didi

dart - 使用具有授权的GET请求的Dart GDrive API下载文件

转载 作者:行者123 更新时间:2023-12-03 03:46:53 26 4
gpt4 key购买 nike

我在Dart中编码,需要使用OAuth2.0从Google GDrive下载文件(即图片文件)。在使用Dart drive_v2_api_browser客户端库后,我在代码中拥有了downloadURL。

我尝试将其直接传递给“src”属性

_image = new ImageElement(src: file.downloadUrl, width: file.imageMediaMetadata.width, height: file.imageMediaMetadata.height);
_image.onLoad.listen(onData, onError: onError, onDone: onDone, cancelOnError: true);

但这产生了403禁止的错误。从那时起,我意识到我需要发出“授权的 GET 请求”。因此,我尝试按照Dart Auth pub软件包 https://pub.dartlang.org/packages/google_oauth2_client上列出的示例进行操作,但我不明白它的要求。

这是我正在尝试的:

var auth = new oauth.SimpleOAuth2(_picker.Token.data);
var request = new HttpRequest();
request.onLoad.listen(onData_Request, onError: onError_Request, onDone: onDone_Request, cancelOnError: true);
request.open("request", file.downloadUrl);
auth.authenticate(request).then((request) => request.send());

但它总是给我一个错误:

token ...。Access-Control-Allow-Methods不允许方法请求。

有没有人有通过Oart2.0相对于Dart GDrive api下载文件的有效示例?

更新:在GünterZöchbauer的帮助下,我得以继续并按如下方式转换Blob:

将此行添加到请求对象:

_downloadRequest.responseType = "blob";

允许我使用文件阅读器:

void onData_Request(Event e) {
Blob response = _downloadRequest.response;
final FileReader reader = new FileReader();

reader.onLoad.listen((e) {
_handleData(reader);
});
reader.readAsArrayBuffer(response);
}

void _handleData(FileReader reader) {
Uint8List uintlist = new Uint8List.fromList(reader.result);
String charcodes = new String.fromCharCodes(uintlist);
_loadImage(_image, charcodes, 225, 225);
}

void _loadImage(ImageElement imageE, String data, int iWidth, int iHeight) {
_imageAsbase64 = window.btoa(data);

_image = new ImageElement(src: "data:image/png;base64," + _imageAsbase64, width: iWidth, height: iHeight);
_image.onLoad.listen(onData, onError: onError, onDone: onDone, cancelOnError: true);
}

void onData(Event e) {
print("success: ");
_context.drawImage(_image, 0, 0);
}

最佳答案

如错误消息所述,request不是有效的HTTP方法。
您需要类似GETPUTPOSTDELETE,...

另请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

关于dart - 使用具有授权的GET请求的Dart GDrive API下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com