Jag har ett skript som laddar upp bilder på en sida och då använder jag en fileinput i html (<code><input type="file" size="30" name="ProductImage"></code>), problemet är att jag vill att användaren bara ska kunna välja jpg/gif bilder som det är nu kan man välja vilka filer man vill... Hur ser din kod ut? Kanske så här. Saken är den att jag vill att användaren redan i "Browse for file"-rutan endast ske se .gif och .jpg bilder... > Saken är den att jag vill att användaren redan i "Browse for file"-rutan endast ske se .gif och .jpg bilder... > ifGif = stringToCheck.lastIndexOf(".gif") Jag tyckte detta var ett så intressant ämne så jag var tvungen att svara mig själv! :-) Den kod som jag testat och som borde fungera (fast den gör inte det) är:Filtyp
hur gör jag detta?
Tack på förhand /TobiasSv: Filtyp
Använder du någon uploadkontroll eller ren asp?
Har du kontroll kan du säkert ställa properties
Har du ren asp skulle du kunna kolla filtypen innan upload och är den inte godkänd, redierecta till en felsida...Sv: Filtyp
Kör följande funktion med onSubmit=return checkFile(); i form-taggen.
<code>
<script language="javascript">
function checkFile() {
stringToCheck = document.form1.ProductImage.value.toLowerCase();
ifGif = stringToCheck.lastIndexOf(".gif")
ifJpg = stringToCheck.lastIndexOf(".jpg")
if(ifGif != -1) {
return true;
}
if(ifJpg != -1) {
return true;
}
alert('Du kan endast använda bilder som är av typen .GIF eller .JPG!');
return false;
}
</script>
</code>
//PutteSv: Filtyp
/TobiasSv: Filtyp
Enligt W3 standard för HTML så finns det ett sätt att göra detta, nämligen:
<input type="file" accept="'image/jpeg', 'image/gif'">
"accept = content-type-list [CI]
This attribute specifies a comma-separated list of content types that a server processing this form will handle correctly. User agents <b>may</b> use this information to filter out non-conforming files when prompting a user to select files to be sent to the server (cf. the INPUT element when type="file")."
Ingen av de läsare jag testade med stödde denna funktionen, säkerligen beroende på att W3 fått med ett <b>may</b> i specen! :-( Det är möjligt att andra läsare för andra platformar stödjer detta sättet så oavsett hur du löser det bör du ha med detta! Det kan ju också vara så att versioner av webläsare som kommer har stöd för detta och då slipper du att ändra i din kod om du lägger till det redan nu.
Surt sa räven! Maila tillverkaren av din favoritläsare och fråga varför de inte har med funktionen!
Om det är IE du anävnder så kan följande länk vara rätt!
http://register.microsoft.com/mswish/suggestion.asp?Sv: Filtyp
> ifJpg = stringToCheck.lastIndexOf(".jpg")
Vad du gör här är ju bara att titta på vad filen har för filändelse. Inte så lyckat om man kommer från en annan plattform än Windows. En jpeg-bild kan ju heta vad som helst, även utan filändelse.Sv: Filtyp
Microsoft säger att de stödjer accept="" i IE6, men jag får det inte att fungera! Någon annan kanske?
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties.asp
Hittade även följande intressanta artikel i ämnet!
http://www.cs.tut.fi/~jkorpela/forms/file.html
Det närmaste en lösning på din frågeställing som jag har hittat är:
http://www.cs.tut.fi/~jkorpela/forms/filecheck.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<title>File input test</title>
<script type="text/javascript" language="JavaScript"><!--
function check() {
var ext = document.f.pic.value;
ext = ext.substring(ext.length-3,ext.length);
ext = ext.toLowerCase();
if(ext != 'jpg') {
alert('You selected a .'+ext+
' file; please select a .jpg file instead!');
return false; }
else
return true; }
//--></script>
<form method="post" name=f
enctype="multipart/form-data"
onsubmit="return check();"
action="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi">
<p>
Please select a JPEG (.jpg) file to be sent:
<br>
<input type="file" name="pic" size="40"
accept="image/jpg">
<p>
Please include a short explanation:<br>
<textarea name="expl" rows="3" cols="40"
onfocus="check();">
</textarea>
<p>
<input type="submit" value="Send">
</form>
</body>
</html>
Inget att rekomendera med andra ord. Lösningen på allt verkar vara att hålla sig till server-side validering av vilken filtyp användaren skickar upp!Sv: Filtyp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Testar FORM</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form name="form1" action="form.asp" enctype="multipart/form-data" method="post">
<p>
<input type="file" name="input1" accept="image/jpeg, image/gif"> <br>
<input type="submit" value="Skicka">
</p>
</form>
</body>
</html>