webForumDet fria alternativet

Välj namn på fil som laddas upp

PHP

3 svar · 232 visningar · startad av learn

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

Jag har ett upload-script som fungera bra. Nu vill jag att användaren ska kunna välja filnamnet. Hur göra?

	<form name="form" ENCTYPE="multipart/form-data" method="post" action="?upload">

	<p>Välj fil</p>
	<p><INPUT TYPE="file" NAME="userfile" class="form"></p>

	<p style="margin-top:15px">Namn på filen</p>
	<p><INPUT TYPE="text" NAME="filnamn" class="form"></p>

	<p class="link" style="margin-top:15px"><a href="#" onClick="document.form.submit()">Ladda upp</a></span></p>

	</form>

<?
if (isset($_GET["doupload"])) {

	$max_size = 500000; // Maxstorlek
		
	// Kontrollerar filens storlek
	if ($HTTP_POST_FILES['userfile']['size']>$max_size) {
					$error = "big";
	} else {
	
		// Kontrollerar filtypen
		if (($HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/png")) {
				
			// Kontrollerar ifall filnamnet redan finns
			if (file_exists($dir . $HTTP_POST_FILES['userfile']['name'])) {
				$error = "name"; // Filnamnet fanns redan

			// Om det inte finns så laddas filen upp
			} else {

				// Laddar upp filen
				$res = copy($HTTP_POST_FILES['userfile']['tmp_name'], $dir .$HTTP_POST_FILES['userfile']['name']);
			}

		// Fel filtyp
		} else {
			$error = "type";

		} // Filtypskontroll

	} // Storlekskontroll

} // Upload

?>
Medlem sedan jan. 20051 130 inlägg
#2

Jaja...

Jag hittade iaf ett script som jag tror att jag kan fixa till lite. Men jag har stött på ett litet problem i scriptet, den del som verifierar att filtypen är tilåten. Det verkar som att preg_split inte fungerar...

Så här ser kod-stycket ut:

$filename = strtolower($_FILES['userfile']['name']); // Get file name; make it all lowercase

$file_ext = preg_split("/./",$filename); // Split filename at period (name.ext)
$allowed_ext = preg_split("/,/",$allowed_ext); // Create array of extensions
foreach($allowed_ext as $ext){
   if($ext==$file_ext[1]) $match = "1"; // File is allowed
}

// File extension not allowed
if($match!="1"){
   $error .= "- File type '".$file_ext[1]."' isn't allowed: $filename<br>";
}

Problemet är att "$file_ext[1]" inte innehåller något... Why???

Medlem sedan aug. 2001145 inlägg
#3

prova explode
$data = explode(".", $fil);
$endelse = $data[count[$data]-1];
eller liknande, borde fungera.

Medlem sedan mars 20034 471 inlägg
#4

Eller:

$lastPointPos = strrpos($fil, '.');
$ext = substr($fil, $lastPointPos + 1); //Plockar ut allt efter sista punkten
665 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
524 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
371 ms — ändringar (db)