我正在用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。
thx提前...
[更新]
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生成的字节数。解码是可以的。文件大小为1003字节,解码也产生1003字节。
[更新2]以下是我谈论的来源:https://github.com/MikeMitterer/AndroidIconGenerator.DART/blob/master/test/src/restserver.dart
在编码到Blob之前,需要解码base64(即atob)url。很简单!试试看!
好的,这是我自己问题的答案:
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);
});
感谢所有人把我推向正确的方向!
介绍 Base64编码是用64(2的6次方)个ASCII字符来表示256(2的8次方)个ASCII字符,也就是三位二进制数组经过编码后变为四位的ASCII字符显示,长度比原来增加1/3。 使用 String a = "伦家是一个非常长的字符串"; //5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy String encode = Base64.en
你们知道一种用javascript将bas64字符串转换成PNG的方法吗?我基本上想在网站上展示它。 示例字符串:
问题内容: 我想将以Base64编码的PNG图像加载到canvas元素。我有以下代码: 在Chrome 8中,我收到错误消息: 在Firefox的Firebug中,这是:“对象的类型与与该对象关联的参数的预期类型不兼容”代码:“ 17” 在那个base64中,是我在GIMP中制作的5x5px黑色PNG正方形,并将其转换为GNU / Linux程序base64中的base64。 问题答案: 从外观上
问题内容: 这是我的代码,我不明白为什么解码功能不起作用。 请少有洞察力会很棒。 它给了我:[解码错误-输出不是utf-8] [解码错误-输出不是utf-8] 问题答案: 返回 最大 长度。 此长度对于调整缓冲区大小很有用,但是不会写入缓冲区的一部分,因此将不是有效的UTF-8。 您只需要使用函数返回的实际写入长度即可。
问题内容: 我正在工作的项目是使用Jackson JSON 序列化程序将一堆Java对象转换为String,以便将它们发送到REST服务。 其中一些对象包含敏感数据,因此我编写了自定义序列化程序以将这些对象序列化为JSON字符串,然后对其进行gzip,然后使用; 对其进行加密。 这会将字符串转换为字节数组,因此我在编解码器中使用Base64编码器将字节数组转换为字符串。REST接口背后的自定义反序
Go提供了对base64编码和解码的内置支持 package main // 这种导入包的语法将默认的base64起了一个别名b64,这样 // 我们在下面就可以直接使用b64表示这个包,省点输入量 import b64 "encoding/base64" import "fmt" func main() { // 这里是我们用来演示编码和解码的字符串 data := "abc12