PDA

View Full Version : سوال: مشکل contenttype کنترل fileupload در firefox



mahsa.n
دوشنبه 06 تیر 1390, 16:23 عصر
سلام

من یه صفحه برای آپلود فایلهای rar و zip درست کردم و توی این صفحه از کنترل fileupload استفاده کردم،وقتی

با ie فایلی رو آپلود میکنم هیچ مشکلی نداره ، ولی وقتی با ff فایل آپلود میکنم به contenttype ایراد می گیره



string [] ValidExtensions = {".rar",".zip",".tar",".7z","jar"};
string[] ValidContentType = { "application/octet-stream", "application/x-rar-compressed", "application/rar", "application/x-zip-compressed", "application/x-tar", "text/plain", "application / x - compressed", "application / zip","multipart / x - zip" };

HttpFileCollection hfc = Request.Files;

for (int j = 0; j < hfc.Count; j++)
{

HttpPostedFile hpf = hfc[j];
long size = hpf.ContentLength;
if (size > 0)
{
//save uploaded file in folder
string contenttype = hpf.ContentType;
if (Array.IndexOf(ValidContentType, contenttype.ToLower()) < 0)
{
lblError.Text = "خطا:نوع فایل غیر مجاز.";
return 0;
}
string ext = Path.GetExtension(hpf.FileName);
if (Array.IndexOf(ValidExtensions, ext.ToLower()) < 0)
{
lblError.Text = "خطا:پسوند فایل غیر مجاز است.";
return 0;
}


لطفا راهنمایی کنید چی کار کنم کدهام توی firefox درست کار کنن

mahsa.n
سه شنبه 07 تیر 1390, 11:18 صبح
یکی از دوستان لطف کردن این کدا رو برام فرستادن و مشکلم برطرف شد


using System.IO;
using System.Runtime.InteropServices;





[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
private extern static System.UInt32 FindMimeFromData(
System.UInt32 pBC,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,
[MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
System.UInt32 cbSize,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,
System.UInt32 dwMimeFlags,
out System.UInt32 ppwzMimeOut,
System.UInt32 dwReserverd
);

public string getMimeFromFile(Stream ms)
{
try
{
byte[] buffer = new byte[256];
if (ms.Length >= 256)
ms.Read(buffer, 0, 256);
else
ms.Read(buffer, 0, (int)ms.Length);
ms.Dispose();
System.UInt32 mimetype;
FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);
System.IntPtr mimeTypePtr = new IntPtr(mimetype);
string mime = Marshal.PtrToStringUni(mimeTypePtr);
Marshal.FreeCoTaskMem(mimeTypePtr);
return mime;
}
catch (Exception e)
{
return "unknown/unknown";
}
}




نحوه استفاده


getMimeFromFile(hpf.InputStream).ToLower()