gpt4 book ai didi

blob - base64 编码的 PNG 到 Blob

转载 作者:行者123 更新时间:2023-12-05 00:37:15 24 4
gpt4 key购买 nike

我正在摆弄从 base64 编码的 PNG 中创建一个 Blob ......

  final FormData formData = new FormData();
final String base64Image = "data:image/png;base64,iVBORw0K<reduced the data.....>gg==";

final Blob blob = new Blob([base64Image],"image/png");

formData.append('file', blob, "android.png");

req.send(formData);

我不知道我做错了什么,但 blob 的内容是一些东西,但不是我想要的 png。

提前谢谢...

[ 更新 ]

  final FormData formData = new FormData();
final String base64Image = "iVBORw0KGgo<...reduce data...>kJggg==";

// BTW: I used the Base64 from dart-sdk/io/base64.dart
final List<int> intList = Base64.decode(base64Image);
final Int8Array int8array = new Int8Array.fromList(intList);
final String atobString = window.atob(base64Image);

// Does not work
// final Blob blob = new Blob([atobString]);

// The same...
// final Blob blob = new Blob([int8array]);

formData.append('file', blob, "android.png");
//formData.append('new-filename', "icon-share.png");

req.send(formData);

我认为 Base64.decode 生成的字节数是可以的。文件大小为 1003 字节,解码也产生 1003 字节。

[ 更新 2 ]
这是我所说的来源:
https://github.com/MikeMitterer/AndroidIconGenerator.DART/blob/master/test/src/restserver.dart

最佳答案

好的,这是我自己的问题的答案:

import 'dart:convert'
...

test(' -> Upload File to REST-Server', () {

final HttpRequest req = new HttpRequest();

loadEnd(HttpRequest request) {
if (request.readyState == HttpRequest.DONE) {

switch(request.status) {

case HttpStatus.HTTP_200_OK:
expect(response['path'].endsWith("android.png"),true);

break;

case HttpStatus.HTTP_0_COMMUNICATION_FAILED:
expect(request.status,HttpStatus.HTTP_200_OK);
break;

default:
expect(request.status,HttpStatus.HTTP_200_OK);
break;
}
}
}

req.open("POST", uriprovider.forUpload().toString());

// REST returns JSON Data
req.setRequestHeader('Accept', 'application/json');

req.onLoadEnd.listen(expectAsync1((ProgressEvent e) => loadEnd(req)));

final FormData formData = new FormData();

final String base64Image = "data:image/png;base64,iVBORw0KG<code reduce for sample>RU5ErkJggg==";
final String raw = "iVBORw0KG<code reduce for sample>RU5ErkJggg==";
final String contenttype = "image/png";

// Base64 is a modified version of dart-sdk/lib/io/base64.dart
final List<int> intList = BASE64.decode(raw);
final Int8Array int8array = new Int8Array.fromList(intList);

// Converting to Uint8Array brought the solution!
final Uint8Array uint8array = new Uint8Array(intList.length);

// does not work!
//var binary = window.atob(raw);

final Blob blob = new Blob([uint8array]);

formData.append('file', blob, "android.png");

req.send(formData);

});

感谢大家把我推向正确的方向!

关于blob - base64 编码的 PNG 到 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678271/

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