我有一个 asp.net MVC 应用程序,它接收来自小型 GPS 记录器的上传的 NMEA 跟踪文件。在某些情况下,记录器会将空 (0x0) 值注入到跟踪文件文本中。在将文件保存到服务器的文件系统进行处理之前,有没有办法从 HttpPostedFile 的 InputStream 中去除这些 0x0 字符?事实上,我只能找到第一个空字符,这就是保存在服务器上的所有文件。
谢谢,马修
我有一个 asp.net MVC 应用程序,它接收来自小型 GPS 记录器的上传的 NMEA 跟踪文件。在某些情况下,记录器会将空 (0x0) 值注入到跟踪文件文本中。在将文件保存到服务器的文件系统进行处理之前,有没有办法从 HttpPostedFile 的 InputStream 中去除这些 0x0 字符?事实上,我只能找到第一个空字符,这就是保存在服务器上的所有文件。
谢谢,马修
如果您使用 SaveAs,它应该写入零。您可以检查调试器中的 InputStream 内容吗(例如使用我上面的阅读方法)-您确定 HttpPostedFile 确实包含零-也就是说,您正确接收数据吗?您是否使用 ENCTYPE="multipart/form-data" 作为上传表单?
InputStream 是二进制的,不应该关心零。因此,问题在于将数据转换为文本 - 但您没有显示用于转换的代码。
您可以手动跳过/替换零:
var outstream = new StringStream();
var b;
while ((b = http.InputStream.ReadByte()) != -1)
if (b != 0)
outstream.Write(b);
现在你得到了没有零的流(当然,如果你愿意,你可以读块等)。