有沒有辦法使用HttpPostedFileBase元素來查明它是否有效的視頻文件fomart(驗證擴展名除外)。我使用aspnet mvc 3的方式。使用HttpPostedFileBase驗證格式視頻文件
0
A
回答
0
如果你想絕對確定,最好檢查HttpPostedFileBase
的魔法字節流。這是因爲有些應用程序可能會將它寫爲您認爲可以處理的擴展名(例如MP4),但實際上它是另一種格式,如M4V。
例如,要檢查流是否爲MP4變體流,可以檢查流是否以字節0x00,0x00,0x00,0x20,0x66,0x74,0x79,0x70,0x6D,0x70和0x34開頭。你可以找到更多的格式here。
像這樣的東西可能工作:
public static bool IsMP4(System.IO.Stream stream)
{
return HasMagicBytes(stream, 0, 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34);
}
public static bool HasMagicBytes (System.IO.Stream stream, int offset, params byte[] magicBytes)
{
try {
bool match = false;
byte[] bytes = new byte[magicBytes.Length];
if (stream.Read (bytes, offset, magicBytes.Length) == magicBytes.Length) {
for (int i = 0; i < magicBytes.Length; i++) {
if (bytes [i] != magicBytes [i]) {
return false;
}
}
return true;
} else {
return false;
}
} finally {
stream.Seek (0, System.IO.SeekOrigin.Begin);
}
}
一些應注意的流是否是可搜索。這種技術對於較大的文件相當有效。爲了使這種可重複使用的,你可以寫一個ValidationAttribute所以有可能這樣定義你的模型:
public class MyModel
{
[CheckFormat(0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34)]
public HttpPostedFileBase MyFile { get; set; }
}
但我會留給你進一步調查。
0
相關問題
- 1. 驗證視頻時間戳格式
- 2. 使用Laravel驗證文件類型(音頻/視頻)
- 3. 自定義驗證的HttpPostedFileBase
- 4. 驗證文本文件的格式?
- 5. Django(音頻)文件驗證
- 6. xml中的視頻文件格式
- 7. 將.exe格式的Adobe Flash Player視頻文件轉換爲Windows視頻格式
- 8. 有沒有辦法驗證MVC 2中傳入的HttpPostedFilebase文件?
- 9. Rails如何驗證文件格式?
- 10. 文件格式驗證django admin
- 11. txt文件格式驗證在java中
- 12. 驗證視頻時間戳
- 13. HTML5視頻驗證錯誤
- 14. 轉換視頻,AVI格式使用C#
- 15. 哪些視頻格式可以使用?
- 16. 如何驗證YouTube視頻ID用JavaScript
- 17. 如何使用多個視頻文件創建視頻文件?
- 18. 視頻流格式
- 19. Android視頻格式
- 20. 使用ffmpeg(編程方式)將CAF(核心音頻格式,線性PCM)文件合併爲視頻(mjpeg)文件
- 21. 使用jquery格式化和驗證CSS
- 22. 如何使用ActiveModel格式驗證?
- 23. 如何使用javascript驗證mm:ss格式
- 24. 將文件上傳限制爲僅音頻和視頻格式
- 25. 如何驗證上傳的文件是視頻?
- 26. 驗證CSV格式
- 27. 驗證json格式
- 28. Django音頻文件表單驗證
- 29. 在用於視頻文件轉換成FLV格式
- 30. 使用javascript驗證網格視圖控件