Dalam aplikasi web saya (asp.net, c #) Saya mengunggah file video dalam satu halaman tetapi saya hanya ingin mengunggah video flv. Bagaimana saya bisa membatasi ketika saya mengunggah video ekstensi lainnya?
Dalam aplikasi web saya (asp.net, c #) Saya mengunggah file video dalam satu halaman tetapi saya hanya ingin mengunggah video flv. Bagaimana saya bisa membatasi ketika saya mengunggah video ekstensi lainnya?
Jawaban:
string myFilePath = @"C:\MyFile.txt";
string ext = Path.GetExtension(myFilePath);
// ext would be ".txt"
Anda cukup membaca aliran file
using (var target = new MemoryStream())
{
postedFile.InputStream.CopyTo(target);
var array = target.ToArray();
}
Indeks 5/6 pertama akan memberi tahu Anda jenis file. Dalam hal FLV 70, 76, 86, 1, 5 .
private static readonly byte[] FLV = { 70, 76, 86, 1, 5};
bool isAllowed = array.Take(5).SequenceEqual(FLV);
jika isAllowedsama truemaka FLV-nya.
ATAU
Baca konten file
var contentArray = target.GetBuffer();
var content = Encoding.ASCII.GetString(contentArray);
Dua / tiga huruf pertama akan memberi tahu Anda jenis file.
Dalam hal FLV, "FLV ......"
content.StartsWith("FLV")
Di server Anda dapat memeriksa tipe MIME, mencari tipe flime mime di sini atau di google.
Anda harus memeriksa bahwa jenis mime adalah
video/x-flv
Misalnya, jika Anda menggunakan FileUpload di C #, Anda bisa melakukannya
FileUpload.PostedFile.ContentType == "video/x-flv"
Anda tidak akan dapat membatasi jenis file yang diunggah pengguna di sisi klien [*]. Anda hanya dapat melakukan ini di sisi server. Jika pengguna mengunggah file yang salah, Anda hanya akan dapat mengenali bahwa setelah file diunggah, diunggah. Tidak ada cara yang dapat diandalkan dan aman untuk menghentikan pengguna mengunggah format file apa pun yang mereka inginkan.
[*] Ya, Anda dapat melakukan segala macam hal pintar untuk mendeteksi ekstensi file sebelum memulai unggahan, tetapi jangan bergantung padanya. Seseorang akan mengatasinya dan mengunggah apa pun yang mereka suka cepat atau lambat.
Anda dapat memeriksa tanda tangan .flv. Anda dapat mengunduh spesifikasi di sini:
http://www.adobe.com/devnet/flv/
Lihat bab "Header FLV".
Menemukan solusi alternatif di DotNetPerls yang saya sukai lebih baik karena tidak mengharuskan Anda menentukan jalur. Berikut adalah contoh di mana saya mengisi array dengan bantuan metode kustom
// This custom method takes a path
// and adds all files and folder names to the 'files' array
string[] files = Utilities.FileList("C:\", "");
// Then for each array item...
foreach (string f in files)
{
// Here is the important line I used to ommit .DLL files:
if (!f.EndsWith(".dll", StringComparison.Ordinal))
// then populated a listBox with the array contents
myListBox.Items.Add(f);
}
string FileExtn = System.IO.Path.GetExtension(fpdDocument.PostedFile.FileName);
Metode di atas berfungsi baik dengan firefox dan IE, saya dapat melihat semua jenis file seperti zip, txt, xls, xlsx, doc, docx, jpg, png
tetapi ketika saya mencoba menemukan ekstensi file dari googlechrome, saya gagal.
Perlu disebutkan bagaimana cara menghapus ekstensi secara paralel dengan mendapatkan ekstensi:
var name = Path.GetFileNameWithoutExtension(fileFullName); // Get the name only
var extension = Path.GetExtension(fileFullName); // Get the extension only