webForumDet fria alternativet

Kontrollera så att det är en bild vid filuppladdning

.NET

2 svar · 1 070 visningar · startad av Claysson

Medlem sedan jan. 200454 inlägg
Frågan#1

Hallå,

Har letat en stund efter någon inbakad funktion som kontrollerar att det är en bild man laddar upp vid filuppladdning, men hittar ingen?

Det jag löst problemet ovan är att jag kontrollerar ContentType första fem tecken innehåller "image". - Har alltså klippt av resten med en StringBuilder (t.ex. image/jpeg).

Jag tror inte min lösning är snabbaste sättet
:l

Medlem sedan feb. 200563 inlägg
#2

Re: Kontrollera så att det är en bild vid filuppladdning

Claysson skrev:

Hallå,

Har letat en stund efter någon inbakad funktion som kontrollerar att det är en bild man laddar upp vid filuppladdning, men hittar ingen?

Det jag löst problemet ovan är att jag kontrollerar ContentType första fem tecken innehåller "image". - Har alltså klippt av resten med en StringBuilder (t.ex. image/jpeg).

Jag tror inte min lösning är snabbaste sättet
:l

Jag förstår inte vad du menar med det snabbaste sättet, för både när det gäller prestanda och utvecklingstid så är det nog svårt att göra något snabbare än att kolla en substräng som du gör...
Problemet med att kolla HttpPostedFile.ContentType är knappast snabbhet utan snarare att den inte returnerar en tillförlitlig contenttype eftersom den verkar förlita sig på filändelsen.

Om du vill kolla säkert att det är en bild samt att du bara vill acceptera vissa bildtyper så kan du använda Image och ImageFormat, genom att skapa ett bildobjekt från den InputStream som HttpPostedFile innehåller.

try {
	System.Drawing.Image image =  System.Drawing.Image.FromStream(MyFileID.PostedFile.InputStream);
	ImageFormat imageFormat =  image.RawFormat;
	if(
		imageFormat.Equals(ImageFormat.Gif) || 
		imageFormat.Equals(ImageFormat.Jpeg) ||
		imageFormat.Equals(ImageFormat.Png)
	) 
	{
		// ... 
		string path = Path.Combine(Server.MapPath("bildkatalog"), MyFileID.PostedFile.FileName);
		image.Save(path);
	}
	else // imageFormat = bmp eller tiff eller ...
	{
		// ...
	}
}
catch ( System.ArgumentException ex ) // den uppladdade filen var något annat än en bild
{
	// ... 
}
Medlem sedan jan. 200454 inlägg
#3

Re: Re: Kontrollera så att det är en bild vid filuppladdning

Jag förstår inte vad du menar med det snabbaste sättet, för både när det gäller prestanda och utvecklingstid så är det nog svårt att göra något snabbare än att kolla en substräng som du gör...

Du förstår mig helt rätt, jag har också sett lösningar som du visat ovan som jag tänkte komma förbi, men nu verkar det inte finns någon bättre funktion. Men tack för en bra förklaring ändå, när det börjar bli lite skarpare grejor på G så får jag nog använda ditt förslag.

Ha en bra helg!

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)