在HTTP中有两种POST数据的方式:application/x-www-form-urlencoded和multipart/form-data.据我所知,大多数浏览器只能在使用时上传文件multipart/form-data.在API上下文中使用其中一种编码类型时是否有任何其他指导(不涉及浏览器)?这可能基于:
到目前为止,我基本上没有在网上找到有关使用不同内容类型的正式指导.
我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的,固定大小的服务器端缓存中(想想:Opensocial配额).我无法控制服务器.
我需要减少存储数据的大小以保持服务器端配额,并且希望能够在将其发送到服务器之前在浏览器中对字符串化JSON进行gzip.
但是,我找不到Gzip的JavaScript实现方式.有关如何在发送之前压缩客户端数据的任何建议吗?
我想将图像文件添加到json对象中.是否可以将图像文件添加到json对象中?
我尝试下面的代码,但它无法正常工作?因为我想将该json对象发送到服务器,所以服务器将读取我的图像文件并存储到该数据库中.
JSONObject test = new JSONObject();
test.put("photo",new File(// Here i set image uri));
Run Code Online (Sandbox Code Playgroud)
因此,当我打印这个json对象时,它只显示图像存储的图像路径.我想要文件发送到服务器.
我正在寻找一种方式,json解析将按原样获取信息(就好像它是CDATA) - 而不是尝试序列化它.我们使用.net和java(客户端和服务器) - 所以答案应该是关于JSON结构有没有办法实现这个结构?
谢谢.
我想使用WebSocket传输二进制数据,但您只能使用WebSockets传输UTF-8字符串.
使用base64对其进行编码是一种选择,但我的理解是,当您的文本可能从一种格式转换为另一种格式时,最理想的是base64.在这种情况下,我知道数据将始终是UTF-8,那么有没有更好的方法来编码UTF-8字符串中的二进制数据而不支付base64的33%大小溢价?
这个问题主要是学术,为二进制的支持可能会被添加到最终的WebSocket和Base64是在此期间完全cromulent替代.
我有用于编辑图像的HTML表单.所有数据都存储在JSON中.当我更改当前图像时,我想通过PHP脚本将更改保存到文本文件中.如果我返回上一张图像,此配置将再次从此文件发送到表单.
我的问题是:
如何安全地写/读这种数据.在何处以及如何有效地检查数据以防止某些JS/PHP代码注入?
我在下面附上了一些概念代码:
JavaScript(使用jQuery):
// Writing
$.ajax({
global: false,
type: "POST",
cache: false,
dataType: "json",
data: ({
action: 'write',
config: JavaScriptJSON_Obj
}),
url: 'read-write.php'
});
// Reading
$.ajax({
global: false,
type: "POST",
cache: false,
dataType: "json",
data: ({
action: 'read'
}),
url: 'read-write.php',
success: function(data){
JavaScriptJSON_Obj = data;
}
});
Run Code Online (Sandbox Code Playgroud)
PHP示例(read-write.php):
switch ($_REQUEST['action']) {
case 'write':
file_put_contents('config.txt', $_REQUEST['config']);
break;
case 'read':
$s = file_get_contents('config.txt');
echo json_encode($s);
break;
}
Run Code Online (Sandbox Code Playgroud) 我现在正在设计一个使用RabbitMQ作为消息队列的设计.消息将具有JSON主体,特别是对于一条消息,我想添加一个小的二进制文件.
我想知道的是,二进制文件的数据是否应该是JSON消息的一部分,还是可以单独附加到消息中?
我正在使用FOSRestBundle构建API,并且我正处于需要实现创建包含二进制数据的新实体的处理阶段.
按照发送二进制数据和REST API请求
概述的方法,multipart/form-data由于Base64需要增加约33%的带宽,因此发送数据对于我们的实现感觉最实用.
题
如何配置REST端点以处理请求中的文件,并在发送数据时对JSON编码实体执行验证multipart/form-data?
当刚刚发送原始JSON时,我一直在使用Symfony的表单handleRequest方法来执行针对自定义的验证FormType.例如:
$form = $this->createForm(new CommentType(), $comment, ['method' => 'POST']);
$form->handleRequest($request);
if ($form->isValid()) {
// Is valid
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这种方法的原因是,我可以根据操作是更新(PUT)还是新操作(POST)来更多地控制实体的数量.
我知道Symfony的Request对象处理请求,以前JSON数据将是content变量,但现在键入request->parameters->[form key]文件bag(request->files)中的文件.
我有一个NSData对象.我需要将其字节转换为字符串并作为JSON发送.description返回十六进制并且不可靠(根据各种SO海报).所以我正在看这样的代码:
NSUInteger len = [imageData length];
Byte *byteData = (Byte*)malloc(len);
[imageData getBytes:&byteData length:len];
Run Code Online (Sandbox Code Playgroud)
然后我如何将byteData作为JSON发送?我想发送原始字节.
码:
NSString *jsonBase64 = [imageData base64EncodedString];
NSLog(@"BASE 64 FINGERPRINT: %@", jsonBase64);
NSData *b64 = [NSData dataFromBase64String:jsonBase64];
NSLog(@"Equal: %d", [imageData isEqualToData:b64]);
NSLog(@"b64: %@", b64);
NSLog(@"original: %@", imageData);
NSString *decoded = [[NSString alloc] initWithData:b64 encoding:NSUTF8StringEncoding];
NSLog(@"decoded: %@", decoded);
Run Code Online (Sandbox Code Playgroud)
除了最后一行之外,我得到了一切的价值 - decoded.哪会告诉我原始字节没有格式化为NSUTF8encoding?
我尝试使用 Base64 编码文件向我的节点服务器发出发布请求。
我收到 PayloadTooLargeError: requestEntity Too Large 异常,所以我按照 Express 4 约定扩展了有效负载限制
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({limit: '100mb', extended: true}));
Run Code Online (Sandbox Code Playgroud)
但是问题仍然出现,有人可以帮我解决为什么吗?
这是我的全局变量
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false}))
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({limit: '100mb', extended: true}));
Run Code Online (Sandbox Code Playgroud)