Gå til innhold

hjelp til dette opplastingsscriptet


Anbefalte innlegg

Hei har disse filene:

 

UploadForm1.php

<html>
<head>
<title># of Files to Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="uploadForm2.php">
 <p>Enter the amount of boxes you will need below. Max = 9.</p>
 <p>
   <input name="uploadNeed" type="text" id="uploadNeed" maxlength="1">
 </p>
 <p>
   <input type="submit" name="Submit" value="Submit">
 </p>
</form>
</body>
</html>

 

 

uploadForm2.php

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form name="form1" enctype="multipart/form-data" method="post" action="processFiles.php">
 <p>
 <?
 // start of dynamic form
 $uploadNeed = $_POST['uploadNeed'];
 for($x=0;$x<$uploadNeed;$x++){
 ?>
   <input name="uploadFile<? echo $x;?>" type="file" id="uploadFile<? echo $x;?>">
 </p>
 <?
 // end of for loop
 }
 ?>
 <p><input name="uploadNeed" type="hidden" value="<? echo $uploadNeed;?>">
   <input type="submit" name="Submit" value="Submit">
 </p>
</form>
</body>
</html>

 

 

processFiles.php

<?
$uploadNeed = $_POST['uploadNeed'];
// start for loop
for($x=0;$x<$uploadNeed;$x++){
$file_name = $_FILES['uploadFile'. $x]['name'];
// strip file_name of slashes
$file_name = stripslashes($file_name);
$file_name = str_replace("'","",$file_name);
$copy = copy($_FILES['uploadFile'. $x]['tmp_name'],$file_name);
// check if successfully copied
if($copy){
echo "$file_name | uploaded sucessfully!<br>";
}else{
echo "$file_name | could not be uploaded!<br>";
}
} // end of loop
?>

 

 

 

Dette fungerer utmerket med XAMPP, og alle filene jeg laster opp, havner i samme mappe som php-dokumentene ligger i.

 

Er ingen racer i PHP, så kan noen fortelle meg hvordan jeg flytter de opplastede filene til f.eks /uploads, og om man kan fikse et script som viser alle filene som ligge i den mappen etterpå?

 

Om noen kunne forklart (grundig) hvordan man gjøre det, hadde det vært flott :thumbup:

 

 

Takk :roll:

Lenke til kommentar
Videoannonse
Annonse

Upload.php

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filnavn:</label>
<input type="file" name="fil"" /> 
<br />
<input type="submit" value="Upload" />
</form>

</body>
</html>

 

upload_file.php

PHP
<?php

if ($_FILES["fil"]["error"] > 0)

{

echo "Feil: " $_FILES["fil"]["error"] . "<br />";

}

else

{

 if (file_exists("upload/" $_FILES["fil"]["name"]))

{

echo $_FILES["fil"]["name"] . " eksisterer. ";

}

else

{

move_uploaded_file($_FILES["fil"]["tmp_name"],

"upload/" $_FILES["fil"]["name"]);

echo "Lagret i: " "upload/" $_FILES["fil"]["name"];

}

}

?>

 

Et lite uploadscripte jeg laget litt fort og gale før jeg stakk på skolen :p Kan fikse sikkerhet osv senere om du er intressert, men har ikke tid nå.

Endret av Mr. Bakke
Lenke til kommentar

Dette er ikke et skript jeg ville brukt fordi dette skriptet legger to kopier av de opplastede filene på serveren. Eller nærmere bestemt dette scriptet fjerner ikke den midlertidige filen som blir lastet opp. Vet ikke om PHP sin søppelmann tar med seg den. Det kan jo være.

 

Men du trenger små modifikasjoner for å få dette til å gjøre det du vil.

 

<?php
 //Anbefaler lange åpnings-merker fordi ikke alle tjenere støtter kun <?
 $uploadNeed = $_POST['uploadNeed'];
 // start for loop
 for($x=0;$x<$uploadNeed;$x++)
 {
   $file_name = $_FILES['uploadFile'. $x]['name'];
   // strip file_name of slashes
   $file_name = stripslashes($file_name);
   $file_name = str_replace("'","",$file_name);

   //Put the uploaded file in the uploads directory
   $file_name = 'uploads/'.$file_name;

   //Check if this file already exists
   if(file_exists($file_name))
   {
     echo "$file_name already exists. Skipping!<br>";
     //Delete the temporary file.
     unlink($_FILES['uploadFile'.$x]['tmp_name']);
   }
   else
   {
     // check if successfully copied
     if(move_uploaded_file($_FILES['uploadFile'.$x]['tmp_name'], $file_name))
     {
       echo "$file_name | uploaded sucessfully!<br>";
     }
     else
     {
       echo "$file_name | could not be uploaded!<br>";
     }
   }
 } // end of loop
?>

 

Nå vil skriptet sjekke om filen eksisterer i uploads katalogen før den kopierer den over.

 

Den modifikasjonen som gjør det du ba om er $file_name = 'uploads/'.$file_name; Det denne gjør er simpelten å legge katalogen uploads før filnavnet.

 

Denne koden er ikke testet med skrevet etter minne.

 

...og om du skal styre med PHP så kan det være greit og lære seg språket. :)

Lenke til kommentar
...og om du skal styre med PHP så kan det være greit og lære seg språket. :)

8678145[/snapback]

 

Hehe. Ja, så klart:) :thumbup:

 

Men hvilken fil skal jeg legge til det scriptet du postet i?'

 

Edit:

Altså det skal kun lastes opp bildefiler.

Jpg, GIF, bmp, png

 

Når disse er lastet opp, skal de vises i "download" seksjonen. er det mulighet for å vise bildene i miniatyr løsning de som da har blitt lastet opp til "uploads" ? :)

Endret av VisualStudio
Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
PHP
<?php

 //Anbefaler lange åpnings-merker fordi ikke alle tjenere støtter kun <?

 $uploadNeed $_POST['uploadNeed'];

 // start for loop

 for($x=0;$x<$uploadNeed;$x++)

 {

 $file_name $_FILES['uploadFile'$x]['name'];

 // strip file_name of slashes

 $file_name stripslashes($file_name);

 $file_name str_replace("'","",$file_name);

 

 //Put the uploaded file in the uploads directory

 $file_name 'uploads/'.$file_name;

 

 //Check if it's an image

 

 if (($_FILES['uploadFile'.$x]["type"] != "image/gif") || 

 ($_FILES['uploadFile'.$x]["type"] != "image/jpg")) || 

 ($_FILES['uploadFile'.$x]["type"] != "image/bmp")) || 

 ($_FILES['uploadFile'.$x]["type"] != "image/png"))

 {

 echo "$file_name is not an image<br>";

 unlink($_FILES['uploadFile'.$x]['tmp_name']);

 }

 

 //Check if this file already exists

 if(file_exists($file_name))

 {

 echo "$file_name already exists. Skipping!<br>";

 //Delete the temporary file.

 unlink($_FILES['uploadFile'.$x]['tmp_name']);

 }

 else

 {

 // check if successfully copied

 if(move_uploaded_file($_FILES['uploadFile'.$x]['tmp_name'], $file_name))

 {

 echo "$file_name | uploaded sucessfully!<br>";

 }

 else

 {

 echo "$file_name | could not be uploaded!<br>";

 }

 }

 } // end of loop

?>

Bygget litt videre på scriptet til BlueEAGLE jeg da :whistle: Scriptet sjekker nå om filen er av ønsket type, vis ikke vil, ikke filen bli lastet opp. Har ikke testet scriptet, så kan ikke garantere at det fungerer. BlueEAGLE, temp filen som ble lastet opp i det forrige scriptet mitt vil bli slettet når scriptet er slutt.

 

Forresten: Lettere å lese scriptet om du bruker PHP taggen.

 

Edit: La til en skjul tag, så ikke scriptet ødela bredden på forumet.

Endret av Mr. Bakke
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...