C# 努力获取已发布文件的正确字符串表示形式';输入流
我们有一个客户端控件,用户可以在其中上载任何文件类型。表单被序列化为FormData对象,然后通过ajax调用将文件发布到服务器C# 努力获取已发布文件的正确字符串表示形式';输入流,c#,C#,我们有一个客户端控件,用户可以在其中上载任何文件类型。表单被序列化为FormData对象,然后通过ajax调用将文件发布到服务器 var data = new FormData($("#myform")[0]); $.ajax({ url: url, type: "POST", data: data, processData: false, contentType: false, cache: false, success: functio
var data = new FormData($("#myform")[0]);
$.ajax({
url: url,
type: "POST",
data: data,
processData: false,
contentType: false,
cache: false,
success: function (d, s, x) { },
error: function (x, s, e) { },
complete: function (x) { }
});
在发布文件的接收控制器中,我们基于HttpRequest.Files
集合创建HttpPostedFile
的新实例,然后将InputStream
读入字节[]
HttpPostedFile file = Request.Files[0];
byte[] fileData = null;
string fileStream;
file.InputStream.Position = 0;
using (var reader = new BinaryReader(file.InputStream, System.Text.Encoding.UTF8))
{
fileData = reader.ReadBytes(file.ContentLength);
}
在设置了byte[]
之后,我们对二进制数据执行UTF8.GetString()
调用,以获得字符串表示形式
fileStream = System.Text.Encoding.UTF8.GetString(fileData);
我们遇到的问题是,fileStream
的数据看起来无效,因为它包含一些字符的问号替换字符。
我们尝试将二进制数据转换为字符串表示的原因是将上载文件的值存储在数据库中以供进一步使用。
请问我们缺少什么?我想您对字节数组的序列化有问题。您是否尝试使用ajax.beginform()? 这为你做了很多工作
那么你确定它是UTF8文件吗?我也使用了默认的系统编码,没有运气,你尝试过类似的东西吗?使用streamReader.ReadToEnd()我有相同的输出,上传的源文件的内容是什么?