আমার ওয়েব অ্যাপ্লিকেশনটিতে (asp.net, c #) আমি একটি পৃষ্ঠায় ভিডিও ফাইল আপলোড করছি তবে আমি কেবল ফ্লভি ভিডিও আপলোড করতে চাই। আমি যখন অন্যান্য এক্সটেনশান ভিডিওগুলি আপলোড করি তখন কীভাবে সীমাবদ্ধ রাখতে পারি?
আমার ওয়েব অ্যাপ্লিকেশনটিতে (asp.net, c #) আমি একটি পৃষ্ঠায় ভিডিও ফাইল আপলোড করছি তবে আমি কেবল ফ্লভি ভিডিও আপলোড করতে চাই। আমি যখন অন্যান্য এক্সটেনশান ভিডিওগুলি আপলোড করি তখন কীভাবে সীমাবদ্ধ রাখতে পারি?
উত্তর:
string myFilePath = @"C:\MyFile.txt";
string ext = Path.GetExtension(myFilePath);
// ext would be ".txt"
আপনি কেবল কোনও ফাইলের স্ট্রিমটি পড়তে পারেন
using (var target = new MemoryStream())
{
postedFile.InputStream.CopyTo(target);
var array = target.ToArray();
}
প্রথম 5/6 সূচকগুলি আপনাকে ফাইলের প্রকারটি বলবে। FLV এর ক্ষেত্রে এটি 70, 76, 86, 1, 5 ।
private static readonly byte[] FLV = { 70, 76, 86, 1, 5};
bool isAllowed = array.Take(5).SequenceEqual(FLV);
যদি এর isAllowedসমান হয় trueতবে এর এফএলভি।
অথবা
একটি ফাইলের বিষয়বস্তু পড়ুন
var contentArray = target.GetBuffer();
var content = Encoding.ASCII.GetString(contentArray);
প্রথম দুই / তিনটি অক্ষর আপনাকে ফাইলের প্রকারটি বলবে।
FLV এর ক্ষেত্রে এর "FLV ......"
content.StartsWith("FLV")
সার্ভারে আপনি মাইম টাইপ, এখানে ফ্ল্যাশ মাইম টাইপ বা গুগলে দেখতে পারেন।
আপনার মাইম টাইপটি পরীক্ষা করা উচিত
video/x-flv
আপনি উদাহরণস্বরূপ যদি সি # তে একটি ফাইলআপলোড ব্যবহার করেন তবে আপনি এটি করতে পারেন
FileUpload.PostedFile.ContentType == "video/x-flv"
ব্যবহারকারীরা যে ফাইল ফাইলটি ক্লায়েন্ট পক্ষের আপলোড করে সেটিকে সীমাবদ্ধ রাখতে সক্ষম হবেন না [*]। আপনি কেবল সার্ভারের পাশেই এটি করতে সক্ষম হবেন। যদি কোনও ব্যবহারকারী কোনও ভুল ফাইল আপলোড করে তবে আপনি কেবল ফাইলটি আপলোড হওয়ার পরে তা বুঝতে সক্ষম হবেন। কোনও ব্যবহারকারী তাদের ফাইল ফাইল ফরম্যাট আপলোড করা বন্ধ করার কোনও নির্ভরযোগ্য এবং নিরাপদ উপায় নেই।
[*] হ্যাঁ, আপনি আপলোড শুরু করার আগে ফাইল এক্সটেনশন সনাক্ত করতে সমস্ত ধরণের চালাক স্টাফ করতে পারেন, তবে তার উপর নির্ভর করবেন না। কেউ এটিকে ঘিরে ফেলবে এবং তাড়াতাড়ি বা পরে যা কিছু পছন্দ করবে তা আপলোড করবে।
আপনি .flv স্বাক্ষর পরীক্ষা করতে পারেন। আপনি এখানে স্পেসিফিকেশন ডাউনলোড করতে পারেন:
http://www.adobe.com/devnet/flv/
"দ্য এফএলভি শিরোনাম" অধ্যায়টি দেখুন।
ডটনেটপার্টসগুলিতে একটি বিকল্প সমাধান খুঁজে পেয়েছি যা আমি ভাল পছন্দ করেছি কারণ এটির জন্য আপনাকে কোনও পথ নির্দিষ্ট করার দরকার নেই। এখানে একটি উদাহরণ যেখানে আমি একটি কাস্টম পদ্ধতির সাহায্যে একটি অ্যারে তৈরি করেছি
// 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);
উপরের পদ্ধতিটি ফায়ারফক্স এবং আইইয়ের সাথে দুর্দান্তভাবে কাজ করে, আমি জিপ, টিএসটিএসটি, এক্সএলএস, এক্সএলএসএক্স, ডক, ডক্স, জেপজি, পিএনজি সব ধরণের ফাইল দেখতে সক্ষম
তবে আমি যখন গুগল ক্রোম থেকে ফাইলের এক্সটেনশন সন্ধান করার চেষ্টা করেছি, আমি ব্যর্থ হয়েছি।
এক্সটেনশন পাওয়ার সাথে সমান্তরালে কীভাবে এক্সটেনশনটি সরিয়ে ফেলা যায় তা উল্লেখ করার মতো:
var name = Path.GetFileNameWithoutExtension(fileFullName); // Get the name only
var extension = Path.GetExtension(fileFullName); // Get the extension only