纯文本文件的幻数

时间:2014-05-15 08:18:48

标签: magic-numbers

谷歌搜索后,我发现魔术数字可用于识别文件的内容类型。

在我的程序中,我想在服务器端验证文件内容类型。

我的客户端代码:

<form action="/Home/Index" method="post" enctype="multipart/form-data">
    <input type="file" id="inputFile" value="" onchange="readFileContent(this)" />
    <input type="submit" value="Submit" />
</form>

function readFileContent(input) {
        if (input.files && input.files[0]) {

            reader = new FileReader();
            reader.onload = function (e) {

                var xhr = new XMLHttpRequest();
                xhr.open('POST', '/Home/CheckFileType', true);
                xhr.setRequestHeader("Content-Type", "multipart/form-data");
                xhr.setRequestHeader('X-File-Name', input.files[0].name);
                xhr.setRequestHeader('X-File-Type', input.files[0].type);
                xhr.setRequestHeader('X-File-Size', input.files[0].size);
                xhr.send(input.files[0]);
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        alert(xhr.responseText);
                    }
                }

            };
            reader.readAsText(input.files[0]);
        }
    }

这是我的服务器端代码:

[HttpPost]
        public JsonResult CheckFileType()
        {
            string fileType = Request.Headers["X-File-Type"];
            byte[] buffer = new byte[Request.InputStream.Length];
            Request.InputStream.Read(buffer, 0, Convert.ToInt32(Request.InputStream.Length));

            object result = new { status = "finished" };
            return Json(result, JsonRequestBehavior.AllowGet);
        }

纯文本或.txt文件的幻数是什么

1 个答案:

答案 0 :(得分:9)

此处讨论的上下文中的幻数通常用于指示二进制文件中的数据类型。解析文件的程序可以查看幻数,然后知道如何处理文件的其余部分。例如,所有Java .class文件(不是源文件)的幻数是0xCAFEBABE。在运行时,类加载器加载一个类时,它将查看前4个字节,如果它们不是0xCAFEBABE,则类加载器不会将该文件视为有效的Java类文件。如果您为某些正在编写或希望其他人编写的软件定义自己的文件类型,则可以定义自己的幻数或数字。当软件创建您的类型的文件时,软件负责在文件中写入适当的幻数。读取文件的软件可以使用该幻数来帮助决定做什么。

纯数字对纯文本文件没有意义。如果您为文件写入幻数,它将不再是纯文本文件。它将是一个遵循您的格式的文件,可能是一个幻数后跟一堆纯文本。如果这是你想要的,那就去做吧。我不知道你的应用程序正在做什么,但可以想象,只要你知道文件将始终由你自己的软件(或其他符合你的幻数预期的软件)读取和写入,这可能是有意义的。 / p>

我希望有所帮助。