2014-05-15 30 views
2

谷歌搜索後,我發現可以使用幻數來標識文件的內容類型。純文本文件的幻數

在我的程序中,我想驗證服務器端的文件內容類型。

我的客戶端代碼:

<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文件

回答

5

魔術這裏討論的上下文中的數字通常用於指示二進制文件中的數據類型。解析文件的程序可以查看幻數,然後知道如何處理文件的其餘部分。例如,所有Java.class文件(不是源文件)的幻數都是0xCAFEBABE。在運行時,類加載器加載一個類時,它會查看前4個字節,如果它們不是0xCAFEBABE,則類加載器不會將該文件視爲有效的Java類文件。如果您正在爲某些您正在撰寫或希望其他人撰寫的軟件定義自己的文件類型,則可以定義自己的幻數或數字。當軟件創建你的類型的文件時,軟件有責任在文件中寫入適當的幻數。讀取文件的軟件可以使用該幻數來幫助確定要執行的操作。

幻數對純文本文件沒有意義。如果你爲這個文件寫了一個幻數,它將不再是一個純文本文件。這將是一個遵循你的格式的文件,它可能是一個幻數,然後是一堆純文本。如果這就是你想要的,那就去做吧。我不知道你的應用程序在做什麼,但可以想象,只要你知道這些文件總是由你自己的軟件(或其他符合你的幻數預期的軟件)來讀寫。

我希望有幫助。