PDA

View Full Version : بدست آوردن ContantType یک فایل روی سرور



shahab_ksh
پنج شنبه 29 شهریور 1386, 10:56 صبح
چطوری میشه ContantType یک فایل که بر بروی سرور Uploade شده رو بدست بیارم؟

Behrouz_Rad
پنج شنبه 29 شهریور 1386, 12:10 عصر
Request.ContentType

shahab_ksh
شنبه 31 شهریور 1386, 18:57 عصر
ممنون
اما چطور فایل روی سرور رو بهش معرفی کنم که ContantType اون رو بدست بیارم
فرض کنید در دایرکتوی

myfiles/ok.zip/..

Behrouz_Rad
شنبه 31 شهریور 1386, 20:27 عصر
با استفاده از خاصیت ContentType کلاس HttpWebRequest

shahab_ksh
دوشنبه 02 مهر 1386, 18:33 عصر
با استفاده از خاصیت ContentType کلاس HttpWebRequest

باز هم متوجه نشدم چطور آدرس فایل روی سرور رو بهش بدم راستش تو اینترنت گشتم چیز زیادی در این مورد پیدا نکردم اگه ممکنه در این مورد یه مثال بزنید

Behrouz_Rad
دوشنبه 02 مهر 1386, 21:29 عصر
اگر Resource تو منبعی هست که برای ISAPI شناخته شده است از HttpWebRequest و HttpWebResponse استفاده کن. اما در حالتی که قصد داری ContentType فایل های دیگه ای رو به دست بیاری، از FileWebRequest و FileWebResponse استفاده کن.
تمامی این کلاس ها Implement ای از کلاس پدرشون یعنی WebRequest و WebResponse هستند که متدهای کلاس پدر رو Override کردن.


Dim myFileWebResponse As FileWebResponse = Nothing
Dim myFileWebRequest As FileWebRequest = Nothing
myFileWebRequest = CType(WebRequest.Create(Server.MapPath(".") & "\Files\myfile.zip"), FileWebRequest)
myFileWebResponse = CType(myFileWebRequest.GetResponse(), FileWebResponse)
Response.Write(myFileWebResponse.ContentType.ToStr ing())

موفق باشید.

shahab_ksh
شنبه 07 مهر 1386, 16:11 عصر
از شما ممنون آقای بهروز عزیز
راستش تو اینترنت زیاد جستجو کردم در این مورد تنها راه این شد مقدار ContentType رو موقع آپلود در بانک اطلاعاتی ذخیره کنم تنها کتابهایی که در این مورد مطلب نوشته بودید از طریق پسوند فایل و تعریف ContentType مربوطه اقدام کرده بودند که این روش مشکلات زیادی داره قطعه کد شما هم تست کردم برای انواع فایلها چه عکس و فیلم و باینری همواره مقدار ContentType ثابتی رو بر میگردونه

Behrouz_Rad
شنبه 07 مهر 1386, 17:28 عصر
شما چه انتظاری از نوع برگشتی ContentType داری؟
فایل هایی با محتویات باینری octet-stream هستند و این کاملا طبیعیه...
اگر چیز دیگری مد نظرت هست بگو...!

shahab_ksh
شنبه 07 مهر 1386, 18:10 عصر
همواره برای تمام فایلها حتی عکس مقدار octet-stream رو برگشت میده مثلا برای فایلهای mp3 باید audio/mpeg باشد اما octet-stream برگشت میده

Behrouz_Rad
شنبه 07 مهر 1386, 20:25 عصر
نه! این نوع شناختی Content-Type ای که میگی رو خود برنامه نویس در برنامه (مثلا برای دانلود فایل) در تعیین هدر Content-Type مشخص می کنه.
شاید به دست آوردن پسوند برای کاری که میخوای انجام بدی بهتر باشه، هر چند که بهتر بود از اول اصل ماجرا رو توضیح میدادی ;)

موفق باشید.

shahab_ksh
شنبه 07 مهر 1386, 21:48 عصر
جالبه فکر میکنم یه جاهایی یسری توابع رو کوتاهی کرده مایکروسافت یعنی به این فکر نکردن فرض کنید یه سری فایل رو از طریق FTP به داخل یه دایرکتوری انتقال دادن بعد بخایم این فایلها رو از طریق استریم به کابرهامون بدیم از کجا باید ContentType رو بدست بیاریم راستش تعیین ContentType از روی پسوند کار اصولی نیست تست کردم فرض کنید یه فایل تکست و یه فایل فیلم که هر رو پسوندشوت .dat هستش وجود داشته باشه رو به استریم فرستادن مشکل ساز میشه نمیدونه باینری بفرسته یا بصورت تکست موقع آپلود فایل که از UploadFile.PostedFile.ContentType رو بدست میاریم میتونه تشخیص بده چه نوعیه و میشه در بانک اطلاعاتی ذخیرش کرد البته دیدم در vb.net ویندوز این امکان وجود داره ولی در asp.net نه

Behrouz_Rad
شنبه 07 مهر 1386, 22:04 عصر
موقع آپلود فایل که از UploadFile.PostedFile.ContentType رو بدست میاریم میتونه تشخیص بده چه نوعیه و میشه در بانک اطلاعاتی ذخیرش کرد
این وظیفه رو مرورگر انجام میده که هدر فایل رو بررسی می کنه.
اما در حالت صریح فراخوانی این متد، برای فایل های باینری octet-stream برگشت داده میشه.