PHP File-Upload


phwert

Erfahrenes Mitglied
#1
Hallo,

ich habe hier eine File-Upload-Routine, die bis auf zwei Ausnahmen das tut, was ich will. Es geht nur um lokal auf meinen Rechner vorhandene Files.
  • ich brauche unbedingt den Pfad, von dem die Files geholt werden; momentan werden nur temporäre Pfade angezeigt, z. B. "/tmp/phpz4XvIB"
  • die Files werden nicht im angegebenen Verzeichnis "upload/" gespeichert, obwohl das Verzeichnis existiert; sie werden gar nicht gespeichert (kopiert).
Hat jemand eine Idee, warum es bei den beiden Punkten hakt?

Gruß

Code:
<!doctype html>
<html>
<head>

    <?php
 
include("config.php");

if(isset($_POST['submit'])){
 
    for($i=0;  $i < count($_FILES['upload']['name']); $i++) {

  $name = $_FILES['upload']['name'][$i];
  $target_dir = "upload/";
  $target_file = $target_dir . basename($_FILES["upload"]["name"][$i]);

  // Select file type
  $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

  // Valid file extensions
  $extensions_arr = array("jpg","jpeg","png","gif");

  // Check extension
  if( in_array($imageFileType,$extensions_arr) ){
 
 
     // Insert record
     $query = "insert into images (name, image) values('".$name."', ' ')";
 
     mysqli_query($con,$query) or die(mysqli_error($con));
   

     // Upload file
     move_uploaded_file($_FILES['upload']['tmp_name'][$i],$target_dir.$name);
 

  }

    }

}
?>

<form action="" enctype="multipart/form-data" method="post">
    <input id='upload' name="upload[]" type="file" multiple="multiple" />
    <input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

Code:
create database temp;

use temp;

CREATE TABLE `images` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `image` longtext NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Code:
<?php

$host       = "localhost";  /* Host name */
$user       = "temp";       /* User */
$password   = "temp";       /* Password */
$dbname     = "temp";   /* Database name */

// Create connection
$con = mysqli_connect($host, $user, $password, $dbname);

// Check connection
if (!$con) {
    die("Connection failed: " . mysqli_connect_error());
}

?>
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
#5
die Files werden nicht im angegebenen Verzeichnis "upload/" gespeichert, obwohl das Verzeichnis existiert; sie werden gar nicht gespeichert (kopiert).
Bei mir werden sie gespeichert, nachdem ich das, was mit der Datenbank zu tun hat, entfernt habe. Möglicher Weise ein Fehler bei den Datenbankoperationen, mal die Fehleranzeige einschalten.
 

EuroCent

Erfahrenes Mitglied
#7
Wenn Du wissen willst was alles bei einem Upload mitkommt dann versuch mal dieses:
PHP:
<?php
/* Zur besserer Lesbarkeit und Übersicht,
der Wert true bei print_r ist deshalb wichtig,
da Du alles aus der GLOBALEN-Variable haben willst,
mit false oder keinem Wert würde er dir nur das erste/letzte zeigen */
printf('<pre>%s</pre>', print_r($_FILES, true));
?>
 

phwert

Erfahrenes Mitglied
#8
Und das sieht dann so aus:
Code:
Array
(
    [upload] => Array
        (
            [name] => Array
                (
                    [0] => test1.jpg
                    [1] => test2.jpg
                )

            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                )

            [tmp_name] => Array
                (
                    [0] => /tmp/php9RxqAm
                    [1] => /tmp/phpMQ3JNp
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                )

            [size] => Array
                (
                    [0] => 75505
                    [1] => 137770
                )

        )

)
Es gibt also keine Möglichkeit, an das Verzeichnis zu kommen, in dem die Files ausgewählt wurden?
 

EuroCent

Erfahrenes Mitglied
#9
nicht dass Ich wüsste.
Möglichkeit wäre eventuell via JavaScript, dort zu prüfen was gewählt wurde.

Das wäre noch eine Möglichkeit :)
Per PHP gibt es keine soweit mir bekannt ist :)
 

Neue Beiträge