Javascript 发送一个二进制数据数组,并将其高效地写入服务器端
我正在使用AJAX将一组图像发送到服务器,并在服务器端编写它们 我希望这是尽可能有效的,而且我很确定我现在做的是不好的:Javascript 发送一个二进制数据数组,并将其高效地写入服务器端,javascript,c#,jquery,ajax,binary,Javascript,C#,Jquery,Ajax,Binary,我正在使用AJAX将一组图像发送到服务器,并在服务器端编写它们 我希望这是尽可能有效的,而且我很确定我现在做的是不好的: [WebMethod] public static int Upload(string[] images) { int index = 0; foreach (string image in images) { File.WriteAllBytes(string.Format("{0}.jpeg", index.ToString
[WebMethod]
public static int Upload(string[] images)
{
int index = 0;
foreach (string image in images)
{
File.WriteAllBytes(string.Format("{0}.jpeg", index.ToString(), Convert.FromBase64String(image));
index++;
}
}
字符串[]
的形式发送图像数据无效JSON.stringify
对图像数据进行字符串化是个坏主意Convert.FromBase64String
无效这是我的客户端代码:
[WebMethod]
public static int Upload(string[] images)
{
int index = 0;
foreach (string image in images)
{
File.WriteAllBytes(string.Format("{0}.jpeg", index.ToString(), Convert.FromBase64String(image));
index++;
}
}
这将从画布元素捕获图像并将其添加到数组:
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
imagesArr.push(canvas.toDataURL('image/jpeg', JPEG_QUALITY).replace('data:image/jpeg;base64,', ''))
这会将图像阵列发送到服务器:
function sendImageBlock() {
$.ajax({
type: "POST",
url: "/AJAXServices.aspx/Upload",
data: JSON.stringify({images: imagesArr }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {},
error: function (xhr, status, message) {}
});
}
这是我的服务器端代码:
[WebMethod]
public static int Upload(string[] images)
{
int index = 0;
foreach (string image in images)
{
File.WriteAllBytes(string.Format("{0}.jpeg", index.ToString(), Convert.FromBase64String(image));
index++;
}
}
有什么建议我怎样才能保持这个干净和有效?不要使用
字符串
格式,而是使用二进制数据purley?您可以将uint32数组与xhr2(HTML5 XMLHttpRequest级别2)结合使用,以原始二进制格式发送数据
XMLHttpRequest级别2引入了一系列新功能,使
结束我们网络应用程序中的疯狂黑客行为;比如交叉起源
请求、上载进度事件和支持
上传/下载二进制数据
更多信息:
可以通过以下方式在PHP中读取blob中的数据:
<php>
$data = file_get_contents('php://input');
</php>
$data=文件\u获取\u内容('php://input');
您可以将UINT32阵列与xhr2(HTML5 XMLHttpRequest级别2)结合使用,以原始二进制格式发送数据
XMLHttpRequest级别2引入了一系列新功能,使
结束我们网络应用程序中的疯狂黑客行为;比如交叉起源
请求、上载进度事件和支持
上传/下载二进制数据
更多信息:
可以通过以下方式在PHP中读取blob中的数据:
<php>
$data = file_get_contents('php://input');
</php>
$data=文件\u获取\u内容('php://input');
另外-在我的情况下如何使用uint32阵列(1)
?要创建JPEG,您可以使用以下命令将画布数据缓冲区转换为UINT32阵列:var data=new UINT32阵列(canvas.data.buffer);谢谢,服务器端代码呢?webmhod应该接收哪些参数?blob中的数据可以这样读取:$data=file\u get\u contents('php://input');我使用的是.NET,我应该在webmethod接收的参数类型中声明什么?另外-在我的情况下如何使用Uint32Array(1)
?要创建JPEG,您可以使用以下命令将画布数据缓冲区转换为UINT32阵列:var data=new UINT32阵列(canvas.data.buffer);谢谢,服务器端代码呢?webmhod应该接收哪些参数?blob中的数据可以这样读取:$data=file\u get\u contents('php://input');我使用的是.NET,我的webmethod Receives的参数类型应该声明什么?