Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Bestand verzenden (https://forum.scholieren.com/showthread.php?t=726076)

Martin 19-01-2004 20:46

[PHP] Bestand verzenden
 
Ik zit met een klein probleempje in PHP.

Ik wil bestanden uploaden naar een map (dat lukt prima), maar er moeten ook 2 bestanden met dezelfde naam in de map kunnen! Je hebt gelijk, dit is onmogelijk. Maar ik wil dit toch virtueel mogelijk maken, en wel op de volgende manier:

Ik upload het bestand, lees de huidige bestandsnaam in en stop deze in een database. Vervolgens maak ik een unieke bestandsnaan aan met:

PHP-code:

$uniquefilename md5(uniqid(rand(), true)); 

Ik stop het bestand nu in de map files met de nieuwe, unieke bestandsnaam. Dit is allemaal helemaal geen probleem!

Maar als ik ga naar:

download.php?fileid=1

(die correspondeert met een row met daarin de oude bestandsnaam en de unieke bestandsnaam).

Dan moet hij het bestand:

$UNIEKE_BESTANDSNAAM.extensie

downloaden, maar moet als bestandsnaam weergeven:

$OUDE_BESTANDSNAAM.extensie

Hoe doe ik dit?

Scooter B0y 19-01-2004 21:38

PHP-code:

<?

$data = array(
    'UNIEKE_BESTANDSNAAM' => 'OUDE_BESTANDSNAAM.',  
    'enz' => 'ja'
);


// en dan aanroepen als:
$data[$UNIEKE_BESTANDSNAAM];


?>

(y)

Chimera 20-01-2004 08:52

Dat bedoelt 'ie niet.

Martin, je moet een Content-Disposition header opgeven bij je output, die ziet er ongeveer zo uit:
Content-Disposition: attachment; filename=oudbestand.ext;

Blowie 20-01-2004 12:53

Citaat:

Martin schreef op 19-01-2004 @ 21:46:
[...]
Dat is toch logisch? Je stopt de (oude) bestandsnaam in de database en vervolgens hernoem je het bestand naar een nieuwe naam.. Volgens mij heb je 3 velden nodig in je database.. Of heb je dat? Een ID de oude naam en de nieuwe naam..
Of heb je dat al.. wacht.. ik snap het al.. :D solly..

PHP-code:

<?
$ext = substr($nieuwbestandsnaam,-3 );
if(empty($nieuwbestandsnaam)) {
   echo "Er is geen bestand opgegeven";
   exit;
} elseif ( ! file_exists( $filename ) ) {
   echo " STRESS! het bestand is niet gevonden";
   exit;
}
switch( $ext ){
   case "pdf": $ctype="application/pdf";              break;
   case "exe": $ctype="application/octet-stream";      break;
   case "zip": $ctype="application/zip";              break;
   case "doc": $ctype="application/msword";            break;
   case "xls": $ctype="application/vnd.ms-excel";      break;
   case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
   case "gif": $ctype="image/gif";                    break;
   case "png": $ctype="image/png";                    break;
   case "jpg": $ctype="image/jpg";                    break;
   default:    $ctype="application/force-download";
}

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: $ctype");

$user_agent = strtolower ($_SERVER["HTTP_USER_AGENT"]);
if ((is_integer (strpos($user_agent, "msie"))) && (is_integer (strpos($user_agent, "win")))) {
   header( "Content-Disposition: filename=".basename($nieuwebestandsnaam).";" );
} else {
   header( "Content-Disposition: attachment; filename=".basename($oudebestandsnaam).";" );
}

header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($nieuwebestandsnaam));
readfile("$oudebestandsnaam");
exit();
?>

Vrij naar de bron..
Bron: http://be.php.net/manual/nl/function.header.php


Alle tijden zijn GMT +1. Het is nu 17:43.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.