Avatar billede straszek Praktikant
13. januar 2008 - 12:43 Der er 4 kommentarer og
1 løsning

tilpasning af flash/php upload script.

jeg er ved at implementere dette script http://www.element-it.com/DEMOMULTIPOW.aspx på min side - det er en flash ting der gør at man kan uploade flere filer på samme tid, på en smart måde.

Det virker fint, men jeg har bruge for lidt hjælp til at få det tilpasset, således at der udføres et tjek på om den uploaded filtype - er en "lovlig filtype"

Den del der behandler det uploadede ser sådan ud:

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

//Filer som kan uploades
$filetyper = array( "image/jpeg", "image/pjpeg");


echo 'Upload result:<br>'; // At least one symbol should be sent to response!!!

$uploaddir = dirname($_SERVER['SCRIPT_FILENAME'])."/UploadedFiles/";

$target_encoding = "ISO-8859-1";
echo '<pre>';
if((count($_FILES) > 0) AND in_array($_FILES["singlefile"]["type"], $filetyper))
{
    $arrfile = pos($_FILES);
    $uploadfile = $uploaddir . iconv("UTF-8", $target_encoding,basename($arrfile['name']));

    if (move_uploaded_file($arrfile['tmp_name'], $uploadfile))
      echo "File is valid, and was successfully uploaded.\n";
}
else
    echo 'No files sent. Script is OK!'; //Say to Flash that script exists and can receive files

echo 'Here is some more debugging info:';
print_r($_FILES);

echo "</pre>";
?>

Hvordan få jeg tilføjet mulighed for at tjekke om de filer der er valgt til upload er "lovlige" filer? -

jeg f.x. kan skrive
$filetyper = array("image/gif", "text/doc", "image/jpeg", "image/pjpeg", "image/png", "text/pdf", "application/pdf", "application/msword", "application/vnd.ms-excel" );

Og sciptet så tjekke om  filtypen findes i ovenstående array??
Avatar billede straszek Praktikant
13. januar 2008 - 12:57 #1
denne linje: if((count($_FILES) > 0) AND in_array($_FILES["singlefile"]["type"], $filetyper))

Skal være: if((count($_FILES) > 0))
Avatar billede jakobdo Ekspert
13. januar 2008 - 17:53 #2
Jeg tror faktisk du kunne bruge lidt info fra denne artikel: http://www.eksperten.dk/artikler/1098
Avatar billede straszek Praktikant
14. januar 2008 - 14:50 #3
Ja, det er noget i den stil jeg skal bruge, men jeg kan ikke rigtig få det sat ind i scriptet, Jeg har prøvet i det nedenstående, men det spiller ikke, alle filer bliver uploaded uanset endelse:

Nuværende kode:

// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

//Filer som kan uploades
$allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?


echo 'Upload result:<br>'; // At least one symbol should be sent to response!!!

$uploaddir = dirname($_SERVER['SCRIPT_FILENAME'])."/UploadedFiles/";

$target_encoding = "ISO-8859-1";
echo '<pre>';
if((count($_FILES) > 0))
{
    $arrfile = pos($_FILES);
           
       


        $files = $arrfile['name'];
        $temparr = explode(".", $files);
        $temparr[count($temparr)-2] = time();
        $files = implode(".", $temparr);

        $name =  $files;
         

       

$extension = strtolower(pathinfo($arrfile['name']['name'],PATHINFO_EXTENSION));
//Er filen en af de filer vi gerne vil have?

if(in_array($extension,$allowedFileTypes))


   
    if (move_uploaded_file($arrfile['tmp_name'], $uploaddir . $name))
      echo "File is valid, and was successfully uploaded.\n";


$insertSQL = "INSERT INTO indrap_filer(fil_navn,  skole_id, indrap_per,oprettet, oprettet_ip) VALUES
('$extension', '$_SESSION[skoleid]','$_SESSION[indrapper]', '$dagsdato', '$ipnr')";
mysql_query($insertSQL);


}
else
    echo 'No files sent. Script is OK!'; //Say to Flash that script exists and can receive files

echo 'Here is some more debugging info:';
print_r($_FILES);

echo "</pre>";

    }
Avatar billede straszek Praktikant
13. februar 2008 - 19:29 #4
har valgt en anden fremgangsmåde, ved at bruge nofet i stil med:

$allowedFileTypes = array('jpg','gif','png', 'bmp', 'tif', 'jpeg', 'doc', 'xls', 'pdf', 'docx', 'xlsx'); //Hvilke filer vil vi acceptere bliver uploadet?
if(in_array($extension,$allowedFileTypes)){
    if (move_uploaded_file($arrfile['tmp_name'], $uploaddir . $name))
      echo "File is valid, and was successfully uploaded.\n";

}
Avatar billede jakobdo Ekspert
13. februar 2008 - 21:01 #5
Det ligner nu også lidt min kode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester