Avatar billede Slettet bruger
14. april 2004 - 16:48 Der er 24 kommentarer og
2 løsninger

upload system

Jeg har et script der ser sådan ud, og jeg kan ikke få det til at virke, jeg har overhovedet ikke en idé om hvad der er galt...
håber I gør det ;)

<?
$konfiguration["upload_bibliotek"] = "images";
$konfiguration["max_stoerrelse"] = "25";

if($upload != true){
?>
<form ACTION="<? echo $PHP_SELF; ?>?upload=true" method="post" enctype="multipart/form-data">
  <b>Upload picture:</b>
  <input type="file" name="upfil" />
  <input type="submit" value="upload!" />
</form>
<?
}
if($upload == 'true'){

/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

/* Accepterer vi filens stoerrelse? */
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}

/* Saa koerer vi */
if(function_exists("move_uploaded_file()")) {
  move_uploaded_file($fra, $til);
} else {
  copy($fra, $til);
}
}
?>
Avatar billede Slettet bruger
14. april 2004 - 17:01 #1
Det er svært uden du fortæller lidt om hvorfor det ikke virker, og hvordan fejlen udarter sig.

Men du kan stjæle det jeg har lavet til netop dette formål på:
http://www.pacroon.dk/projects/upload.phps - og se om det er noget du kan bruge.

Der kan du redigere i $max_filesize hvis der skal være begrænsning på hvor store filerne der uploades må være.

- pacroon
Avatar billede dennismp Nybegynder
14. april 2004 - 18:33 #2
Kan du være lidt mere specifik.. "kan ikke få det til at virke" - giver ikke mange hints
Avatar billede dennismp Nybegynder
14. april 2004 - 18:35 #3
men prøv at ersttate
if($upload != true){
med
if(!isset($_POST['upload'])) {

og

if(function_exists("move_uploaded_file()")) {
med
if(function_exists("move_uploaded_file")) {

og se om det hjælper

og
if($upload == 'true'){
med
if(isset($_POST['upload'])) {
Avatar billede Slettet bruger
14. april 2004 - 19:21 #4
Jeg giver 20 point til dig pacr00n fordi dit script virker perfekt, og 10 point til dig dennismp fordi du prøvede at hjælpe :)
Avatar billede Slettet bruger
14. april 2004 - 19:21 #5
så begge to læg lige et svar!
Avatar billede dennismp Nybegynder
14. april 2004 - 19:26 #6
ok
Avatar billede Slettet bruger
14. april 2004 - 19:28 #7
så mangler vi bare et svar fra pacr00n...
Avatar billede Slettet bruger
14. april 2004 - 19:45 #8
Jeg har faktisk lige et spørgsmål mere... i det script du har lavet pacr00n.

der vil jeg gerne have at det billede man uploader kommer til at hedder "$session_user.jpg"

hvad skal jeg ændre for at det bliver muligt?
Avatar billede dennismp Nybegynder
14. april 2004 - 19:49 #9
Du kan tilføje:
$filename = $_SESSION['user'] . '.jpg';
lige før linjen:
if(!@copy($userfile, "$archive_dir/$filename")) die ("Can't copy $userfile_name to $filename.");
Avatar billede Slettet bruger
14. april 2004 - 19:51 #10
ok, takker

hvis pacr00n ikke snart svarer, får du bare alle pointsne ;)
Avatar billede dennismp Nybegynder
14. april 2004 - 19:53 #11
du skal bare lige være opmærksom på at .jpg vil altid blive tilføjet til filen, ligemeget hvad det er (html,txt osv) :-)
Avatar billede Slettet bruger
14. april 2004 - 19:54 #12
jep
men jeg vil kun have jpg filer, så det er helt fint
Avatar billede Slettet bruger
14. april 2004 - 20:14 #13
Thanx ;=)
Avatar billede Slettet bruger
14. april 2004 - 21:28 #14
det med at billedet skal hedde $session_user

det virker ikke.
Avatar billede dennismp Nybegynder
14. april 2004 - 21:30 #15
filename = $session_user . '.jpg'; ?
Avatar billede Slettet bruger
14. april 2004 - 21:32 #16
hvis man uploader et billede der hedder noget andet, kommer billedet automatisk til at hedde noget andet,
det er dette script jeg bruger:

<?php
//upload.php
$archive_dir="./subfiles/images";
$max_filesize = 25600;

function upload_form() {
    global $PHP_SELF;
?>
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>?id=upload&action=upload">
<input type="hidden" name="action" value="upload">
Upload file!
<input type="file" name="userfile">
<input type="submit" name="submit" value="Upload">
</form>
<?php
}

function upload_file() {
    global $userfile, $userfile_name, $userfile_size, $userfile_type, $archive_dir, $max_filesize, $WINDIR;
   
    if(isset($WINDIR)) {
        $userfile = str_replace("\\\\","\\", $userfile);
    }
    $filename = basename($userfile_name);
   
    if($userfile_size <= 0) die ("$filename is empty");
   
    if($userfile_size > $max_filesize) die ("$filename is too big! Only $max_filesize bytes allowed!");       
   
    if(!@copy($userfile, "$archive_dir/$filename")) die ("Can't copy $userfile_name to $archive_dir/$filename.");
   
    $filename = $session_user . '.jpg';
   
    if(isset($WINDIR) && !@unlink($userfile)) die ("Can't delete the file $userfile_name.");
   
    echo "<img src=\"subfiles/images/$filename\"><br>";
    echo "$filename has been successfully uploaded.<br>";
    echo "Filesize: " . number_format($userfile_size) . "<br>";
    echo "Filetype: $userfile_type<br>";
}
?>
<html>
<head><title>File upload</title></head>
<body>
<?php
if($action == 'upload') {
    upload_file();
} else {
    upload_form();
}
?>

</body></html>
Avatar billede dennismp Nybegynder
14. april 2004 - 21:37 #17
hvor kommer din $session_user fra? Er det en global variable?

prøv evt at erstatte:
function upload_file() {
med
function upload_file($session_user) {

og der hvor du så kalder upload_file() skriver du så upload_file($session_user);
Avatar billede Slettet bruger
14. april 2004 - 21:38 #18
det er en variabel der er registreret i en session, da man loggede ind
Avatar billede Slettet bruger
14. april 2004 - 21:38 #19
jamen den kan godt uploade filen, den hedder bare noget andet!
Avatar billede dennismp Nybegynder
14. april 2004 - 21:42 #20
"noget andet" ? kan du ikke være mere specifik
Avatar billede Slettet bruger
14. april 2004 - 21:43 #21
den hedder den filen hedder på brugerens computer, hvis filen hedder "billedeafmig.gif" så er det en gif fil der hedder billedeafmig.gif der kommer til at ligge på serveren!
Avatar billede dennismp Nybegynder
14. april 2004 - 21:47 #22
du skulle sætte $filename = .. OVER copy-linjen. Ikke under (der er det for sent) :-)
Avatar billede Slettet bruger
14. april 2004 - 21:50 #23
jep... men nu kommer billedet bare til at hedde .jpg
Avatar billede Slettet bruger
14. april 2004 - 21:53 #24
altså kun ".jpg"
Avatar billede dennismp Nybegynder
14. april 2004 - 21:56 #25
så må $session_user være tom
Avatar billede Slettet bruger
14. april 2004 - 21:57 #26
hmm.. jeg prøver lige at gå det hele igennem

tak for hjælpen
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