tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
1309
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    longstar longstar ist offline Grünschnabel
    Registriert seit
    Aug 2004
    Ort
    Hamburg
    Beiträge
    4
    Hallo Leute,

    ich hab mir das tutorial upload via formular angeschaut. Leider such ich noch eine lösung:

    Ich möchte den "speicherort" fest legen. Aber wie? Hab schon vieles auprobiert aber leider funktioniert dies nicht.

    Hoffe, dass mir einer weiter helfen kann.

     

  2. #2
    Avatar von fmeyer84
    fmeyer84 fmeyer84 ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Haldensleben (Sachsen-Anhalt)
    Beiträge
    42
    Hallo,

    als speicherort wird meistens der copy(); Befehl genommen: (nachdem du die datei hochgeladen hast, liegt sie in einem temp-ordner)

    PHP-Code:
    $bilddatei $_FILES['dateiname'];
    $ziel "images/speicher".$bilddatei['name'];
    copy($bilddatei['tmp_name'],$ziel); 
     
    "Die Tastatur liegt einsam dort, weil father in der motherboard!"

  3. #3
    Avatar von bled
    bled bled ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    B-W
    Beiträge
    246
    Zitat Zitat von fmeyer84
    Hallo,

    als speicherort wird meistens der copy(); Befehl genommen: (nachdem du die datei hochgeladen hast, liegt sie in einem temp-ordner)
    Das kenne ich aber etwas anders...
    Normalerweise macht man das mit move_uploaded_file().
     

  4. #4
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Die zwei Funktionen machen genau das selbe, nur dass move_uploaded_file noch überprüft, ob es sich um eine durch HTTP POST hochgeladenen Datei handelt. Wenn du copy() $_FILES['name']['tmp_name'] übergibst, macht es keinen Unterschied, ob du copy() oder move_uploaded_file() benutzt, nur das copy() etwas schneller sein müsste.
     

  5. #5
    Avatar von bled
    bled bled ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Ort
    B-W
    Beiträge
    246
    Müsste es nicht auch so sein, dass move_uploaded_file() die Temporäre Datei verschiebt (und sie damit aus dem Verzeichnis für temporäre Daten löscht) und copy() die Datei einfach nur kopiert?
    Wenn das so ist, würde ich eher zu move_uploaded_file() tendieren.
     

  6. #6
    Avatar von fmeyer84
    fmeyer84 fmeyer84 ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Haldensleben (Sachsen-Anhalt)
    Beiträge
    42
    Hallo,

    also bei mir geht beides.

    Grüße,
    Fabian
     
    "Die Tastatur liegt einsam dort, weil father in der motherboard!"

  7. #7
    Avatar von fmeyer84
    fmeyer84 fmeyer84 ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Haldensleben (Sachsen-Anhalt)
    Beiträge
    42
    Hallo,

    Zitat Zitat von bled
    Müsste es nicht auch so sein, dass move_uploaded_file() die Temporäre Datei verschiebt (und sie damit aus dem Verzeichnis für temporäre Daten löscht) und copy() die Datei einfach nur kopiert?
    Wenn das so ist, würde ich eher zu move_uploaded_file() tendieren.
    also bei mir auf meinem privaten Server werden die tempfiles immer automatisch gelöscht, nachdem der upload fertig ist.

    Ist das bei jedem Apache server?

    Grüße,
    Fabian
     
    "Die Tastatur liegt einsam dort, weil father in der motherboard!"

  8. #8
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    move_uploaded_file() verschiebt die Datei, copy() kopiert die Datei. Damit wäre move_uploaded_file() eher äquivalent zu rename(). Da sich die Dateien aber in einem temporären Ordner befinden, ist es relativ egal, ob die Dateien im temporären Ordner bleiben oder nicht.
     

  9. #9
    longstar longstar ist offline Grünschnabel
    Registriert seit
    Aug 2004
    Ort
    Hamburg
    Beiträge
    4
    Hallo,

    erstmal vielen dank jungs für die schnelle antwort .

    Leider kann ich damit nicht viel anfangen also hab das eingesetzt kommt immer fehlermeldung. hier der code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    <?
    require('inc/inc_db.php');
    require('inc/lang/german/index.php');
     
                                            ///////// bild upload /////////////
    // ordner name wo es upgeloadet wird
    $tempname = $_FILES['file']['tmp_name'];
     
    // datei name
    $name = $_FILES['file']['name']; 
     
    // prüfung der dateiformate
    $type = $_FILES['file']['type'];
    $size = $_FILES['file']['size']; 
     
    // prüfung von grösse und datei typ 
    // html kann leicht gekratt werden daher php funktion
    if($type != "image/gif" && $type != "image/jpeg") {
        $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
    }
    if($size > "15000") {
        $err[] = "Die Datei welche Sie hochladen wollen, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
    } 
     
     
    ?> 
    <html>
    <head>
    <title><? TITLE; ?></title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <table width="100%">
      <tr> 
        <td colspan="2"><? include('inc/header.php'); ?></td>
      </tr>
      <tr> 
        <td width="11%" rowspan="2" valign="top"><? include('inc/navibox.php'); ?></td>
        <td class="maintop"><? echo SHOW; ?></td>
      </tr>
      <tr> 
        <td valign="top" class="main">
        <?
    // upload
    if(empty($err)) {
        move_uploaded_file("$tempname", "$name");
        echo "Die Datei $name wurde erfolgreich hochgeladen!";
    }
    // kein upload
    else {
        foreach($err as $error)
        echo "$error<br>";
    }
        ?>
    <form enctype="multipart/form-data" action="show.php" method="post">
    <input type="file" name="file"><br>
    <input type="submit" value="hochladen"> 
    </form> 
        </td>
      </tr>
    </table>
    </body>
    </html>



    Es müsste eigendlich ne simple lösung sein. aber bin glaube ich zu dumm für php .
    Ich bring mir das selber gerade bei in http://php4.globe.de/manual/de/ finde selbst da nicht viel oder ich blick da nicht ganz durch.

    hoffe da geht noch was an hilfe.

    Gruß,

    Richard
     

  10. #10
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Es wäre praktisch, wenn du auch die Fehlermeldungen posten würdest, die du bekommst.
     

  11. #11
    longstar longstar ist offline Grünschnabel
    Registriert seit
    Aug 2004
    Ort
    Hamburg
    Beiträge
    4
    stimmt hehe

    Fehlermeldung:

    Warning: copy(c): failed to open stream: No such file or directory in C:\apache\htdocs\works\design1\admin\show.php on line 48
    Die Datei checkout_bullet.gif wurde erfolgreich hochgeladen!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    
    <?
    require('inc/inc_db.php');
    require('inc/lang/german/index.php');
     
                                            ///////// bild upload /////////////
    // ordner name wo es upgeloadet wird
    //$tempname = $_FILES['file']['tmp_name'];
    $tempname = "images/".$name['name'];
     
    // datei name
    $name = $_FILES['file']['name']; 
     
    // prüfung der dateiformate
    $type = $_FILES['file']['type'];
    $size = $_FILES['file']['size']; 
     
    // prüfung von grösse und datei typ 
    // html kann leicht gekratt werden daher php funktion
    if($type != "image/gif" && $type != "image/jpeg") {
        $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
    }
    if($size > "15000") {
        $err[] = "Die Datei welche Sie hochladen wollen, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
    } 
     
     
    ?> 
    <html>
    <head>
    <title><? TITLE; ?></title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <table width="100%">
      <tr> 
        <td colspan="2"><? include('inc/header.php'); ?></td>
      </tr>
      <tr> 
        <td width="11%" rowspan="2" valign="top"><? include('inc/navibox.php'); ?></td>
        <td class="maintop"><? echo SHOW; ?></td>
      </tr>
      <tr> 
        <td valign="top" class="main">
        <?
    // upload
    if(empty($err)) {
        copy($name['tmp_name'],$tempname); 
        echo "Die Datei $name wurde erfolgreich hochgeladen!";
    }
    // kein upload
    else {
        foreach($err as $error)
        echo "$error<br>";
    }
        ?>
    <form enctype="multipart/form-data" action="show.php" method="post">
    <input type="file" name="file"><br>
    <input type="submit" value="hochladen"> 
    </form> 
        </td>
      </tr>
    </table>
    </body>
    </html>
     

  12. #12
    Avatar von fmeyer84
    fmeyer84 fmeyer84 ist offline Mitglied Bronze
    Registriert seit
    Feb 2005
    Ort
    Haldensleben (Sachsen-Anhalt)
    Beiträge
    42
    Hallo,

    nimm mal bei copy:

    PHP-Code:
    copy($name$tempname
     
    "Die Tastatur liegt einsam dort, weil father in der motherboard!"

  13. #13
    longstar longstar ist offline Grünschnabel
    Registriert seit
    Aug 2004
    Ort
    Hamburg
    Beiträge
    4
    immer noch der selber fehler, aber danke. Wenn du eine lösung gefunden dann .

    Aber die lösung reinposten ist gut. Verständlich reinschreiben noch besser, da ich eine seite mache, wo ich was lerne und nicht zum onlinestellen etc.

    Vielen Dank aber...
     

  14. #14
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    PHP-Code:
    copy($_FILES['file']['tmp_name'], '/path/to/uploaddir/'.$_FILES['file']['name']); 
    Das Verzeichnis /path/to/uploaddir/ braucht natürlich die entsprechenden Schreibrechte für den User, unter dem der Apache läuft.
     

  15. #15
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Der Fehler besteht darin, dass momentan beide Parameter der copy-Funktion nicht stimmen.

    $tempname enthält nur "images/", weil $name zuvor nicht definiert wurde.
    Und $name['tmp_name'] ist auch leer, weil $name kein Array ist, da $name bereits $_FILES['file']['name'] enthält.

    Sven
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

Ähnliche Themen

  1. Upload-Formular
    Von DaveThuet im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.11.07, 15:25
  2. Upload in einem Formular!
    Von Seven Secrets im Forum PHP
    Antworten: 23
    Letzter Beitrag: 20.12.05, 23:15
  3. Formular mit Upload
    Von vexx im Forum PHP
    Antworten: 6
    Letzter Beitrag: 04.04.05, 14:02
  4. Upload-Formular?
    Von corsanostra im Forum PHP
    Antworten: 1
    Letzter Beitrag: 26.02.02, 22:32