我用函数声明变量,但得到“fopen():文件名不能为空”

时间:2016-04-05 08:35:06

标签: php file-handling

所以我想打开一个文件并在函数上声明这个文件的路径。 在这个函数中我上传文件并返回它的路径..

$file = upload(); <- where i declare the variable

function upload(){
  //UPLOAD
  if (isset($_FILES['datei'])) {
    ini_set("auto_detect_line_endings", true);
    $upload_folder = getcwd().'/uploads/'; //Das Upload-Verzeichnis
    $filename = pathinfo($_FILES['datei']['name'], PATHINFO_FILENAME);
    $extension = strtolower(pathinfo($_FILES['datei']['name'], PATHINFO_EXTENSION));
    //Überprüfung der Dateiendung
    $allowed_extensions = array('csv');
    if(!in_array($extension, $allowed_extensions)) {
      die("Ungültige Dateiendung. Nur csv-Dateien sind erlaubt");
    }

    //Pfad zum Upload
    $new_path = $upload_folder.$filename.'.'.$extension;

    //Neuer Dateiname falls die Datei bereits existiert
    if(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
      $id = 1;
      do {
        $new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
        $id++;
      } while(file_exists($new_path));
    }

    //Alles okay, verschiebe Datei an neuen Pfad
    move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
    echo 'Datei erfolgreich hochgeladen';
    return $new_path;
  }
}

这就是我要打开文件的地方

$row = 1;
if (($handle = fopen($file, "r", 1)) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        rowformating($data);
    }
    fclose($handle);
}

编辑:

似乎只有在我检查文件错误时才出现错误。如果我执行该文件并上传smth“$ file”ist填充上传文件的路径

0 个答案:

没有答案