webForumDet fria alternativet

Filuppladdning på MAC/Safari

.NET

2 svar · 492 visningar · startad av bwcMikke

Medlem sedan okt. 2004159 inlägg
Frågan#1

Jag har en administrationssida där man kan ladda upp ett portfolioprojekt som kan innehålla max 6st bilder.
Problemet är nu att min kund som sitter med MAC/Safari MÅSTE ladda upp 6st bilder annars får han ett felmeddelande. Jag som sitter på PC/IE kan bara välja att ex. ladda upp första bilden och då hoppas de andra över.

Koden ser ut som följer

if (IsPostBack && Request.QueryString["action"] == "save"){

	int i;
	Files = Request.Files;
	string[] arr1 = Files.AllKeys;

	// Loopa igenom alla bilder
	for (i=0; i < arr1.Length; i++){
		HttpPostedFile MyPostedMember = Request.Files[i];
		intPicNum=i;

		if (IsImage(MyPostedMember)){ 
			MyStream = MyPostedMember.InputStream;
			Bitmap bmOriginal = new Bitmap(MyStream, true);	
	
			UploadImage(bmOriginal, MyPostedMember,"" );					
		}
		else if(MyPostedMember.FileName.Length > 0){
			UploadFile(MyPostedMember);
		} //if
	}	//for
			
	//SparaDatabasen
	WriteDB();

	Response.Redirect("lstPF.asp");
} // PostBack

Felet uppstår i IsImage som ser ut så här:

 
bool IsImage(HttpPostedFile file){
// Special på slutet för att TIF-filer av någon anledning inte räknas som en bild.
if ((file != null && Regex.IsMatch(file.ContentType, "image/\\S+") && file.ContentLength> 0) || (file.ContentType == "application/octet-stream" && file.ContentLength> 0)){
return true;
}
return false;
}

Felmeddelandet lyder:

Server Error in '/' Application. Value cannot be null. 
Parameter name: input 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.ArgumentNullException: Value cannot be null. 
Parameter name: input Source Error: 
Line 281:bool IsImage(HttpPostedFile file){ 
Line 282: // Special på slutet för att TIF-filer av någon anledning inte räknas som en bild. Line 283: if ((file != null && Regex.IsMatch(file.ContentType, "image/\\S+") && file.ContentLength> 0) || (file.ContentType == "application/octet-stream" && file.ContentLength> 0)){ Line 284: return true; Line 285: } Source File: e:\www\tadmin754\tuser863\html\admin\portfolio\bwcupload.cs    
Line: 283 

Stack Trace: [ArgumentNullException: Value cannot be null. 
Parameter name: input] System.Text.RegularExpressions.Regex.IsMatch(String input) +85 System.Text.RegularExpressions.Regex.IsMatch(String input, String pattern) +38 BWC.Upload.IsImage(HttpPostedFile file) in 
e:\www\tadmin754\tuser863\html\admin\portfolio\bwcupload.cs:283 BWC.Upload.Page_Load(Object sender, EventArgs e) in 
e:\www\tadmin754\tuser863\html\admin\portfolio\bwcupload.cs:148 System.Web.UI.Control.OnLoad(EventArgs e) +67 System.Web.UI.Control.LoadRecursive() +35 System.Web.UI.Page.ProcessRequestMain() +750 Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET Version:1.1.4322.2300

Är det något med MAC eller Safari som gör att det inte funkar som på PC/IE
Hittade denna tråd: http://www.webforum.nu/showthread.php?t=116893
men det känns inte riktigt rätt.

Tacksam för hjälp och tack på förhand

Medlem sedan dec. 19996 721 inlägg
#2

Felet är att du i if-satsen kontrollerar file.ContentType fastän file kan vara null, samt att du måste kolla om file.ContentType är null också.

bool IsImage(HttpPostedFile file)
{
return (file != null && file.ContentType != null && file.ContentLength > 0 && (Regex.IsMatch(file.ContentType, "image/\\S+") || file.ContentType == "application/octet-stream"));
}
Medlem sedan okt. 2004159 inlägg
#3

Tack emission !

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)