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
{
// ...
}