Javascript - 发送编码二进制 (zip) 文件数据并在 c# 中解码
Javascript - sending encoding binary (zip) file data and decoding it in c#
我有 zip 文件,我想将其编码并作为字符串发送,然后解码并保存在服务器端:
这是客户端(JS)中的编码代码:
var fileAsText = ''
var reader = new FileReader()
reader.onload = function (event) {
fileAsText = encodeURIComponent(event.target.result)
}
reader.readAsText(zipFile)
zipFile
为输入文件对象(用户上传)。
我在 JSON
中作为 Post
发送的 fileAsText
字符串(这就是我使用 encodeURIComponent
的原因)
一切正常,但在服务器端我想获取此字符串并将其解码回为二进制文件(zip 文件)并解压缩。我想获得 完全相同的文件 用户在客户端上传。
这是我在 c# 中的代码:
using (var bw = new BinaryWriter(File.Open("fileTest.zip", FileMode.Create)))
{
bw.Write(HttpUtility.UrlDecode(fileAsText));
}
问题:我没有得到相同的文件(二进制数据不同)
我认为解码器 HttpUtility.UrlDecode
不适合 encodeURIComponent
知道如何获取用户上传的相同文件二进制数据吗?
二进制字符串在 javascript 中效果不佳,最好 post 将其作为多部分表单数据。
但是如果你真的需要 post 它作为一些服务器限制的 json 那么最好的是将它作为 base64
发送
快速修复只是将 readAsText
更改为 readAsDataURL
然后在服务器端使用 Convert.FromBase64String
将其转换回二进制
byte[] data = Convert.FromBase64String(encodedString);
我有 zip 文件,我想将其编码并作为字符串发送,然后解码并保存在服务器端:
这是客户端(JS)中的编码代码:
var fileAsText = ''
var reader = new FileReader()
reader.onload = function (event) {
fileAsText = encodeURIComponent(event.target.result)
}
reader.readAsText(zipFile)
zipFile
为输入文件对象(用户上传)。
我在 JSON
中作为 Post
发送的 fileAsText
字符串(这就是我使用 encodeURIComponent
的原因)
一切正常,但在服务器端我想获取此字符串并将其解码回为二进制文件(zip 文件)并解压缩。我想获得 完全相同的文件 用户在客户端上传。
这是我在 c# 中的代码:
using (var bw = new BinaryWriter(File.Open("fileTest.zip", FileMode.Create)))
{
bw.Write(HttpUtility.UrlDecode(fileAsText));
}
问题:我没有得到相同的文件(二进制数据不同)
我认为解码器 HttpUtility.UrlDecode
不适合 encodeURIComponent
知道如何获取用户上传的相同文件二进制数据吗?
二进制字符串在 javascript 中效果不佳,最好 post 将其作为多部分表单数据。
但是如果你真的需要 post 它作为一些服务器限制的 json 那么最好的是将它作为 base64
发送快速修复只是将 readAsText
更改为 readAsDataURL
然后在服务器端使用 Convert.FromBase64String
byte[] data = Convert.FromBase64String(encodedString);