FieUpload Check

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • FieUpload Check

    hallo

    hab ein formular geschrieben, wo man ein file auf den server laden kann.
    nun dacht ich mir, bau ich einen check ein, wo geprüft wird, ob es das file schon auf dem server gibt, und falls ja, kommt ein Javascript confirm, wo nach Bestätigung ein hidden form mit übergebenem filename und filename_tmp wieder an die funktion des dateiuploads übergeben wird.

    Dies ging natürlich voll in die hose. Ich denke, hier sind die save settings des servers dafür verantwortlich.

    Es wird halt alles gecheckt und das popup kommt auch bei vorhandenem dateinamen, aber das tmp_file per value in der hidden form zu übergeben funzt natürlich nicht.

    Hat jemand eine idee wie man dieses problem trotzdem lösen könnte.

  • #2
    Der Upload ist bereits mit dem ersten Abschicken des Formulars erfolgt - aber die Datei bleibt nur so lange im Temp-Verzeichnis erhalten, wie die dabei angestossene Scriptinstanz läuft.
    Also müsstest du sie zu dem Zeitpunkt schon sichern, in dem du sie in ein anderes Verzeichnis verschiebst.
    Anschliessend kannst du beim Client rückfragen, und dann ggf. die vorhandene Datei mit der neuen überschreiben (bzw. erst löschen, dann umkopieren).

    Sessions helfen, den temporären Dateinamen zu "behalten".

    Andere Alternative wäre, den Namen schon vor dem Upload zu überprüfen, mittels AJAX.
    In dem Fall allerdings bedenken, dass Race Conditions entstehen können.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      wahsaga legst du etwa nachtschicht ein? hehe...
      ja danke für deinen denkanstoss.

      werde die datei erstmal in ein extra tmp verzeichnis hochladen und nach
      fileckeck == TRUE und bestätigung des überschreibens die datei aus dem Verzeichnis löschen und die datei aus dem tmp rüberkopieren.

      ja das hört sich gut an. das versuch ich gleich mal.

      nochmals danke

      Kommentar


      • #4
        Yessss!!

        hat underbar geklappt

        PHP-Code:
        /**Fileupload
              *
              */         
            
        public static function FileUpload ($filename$filename_tmp$overwritefile false){         
            
                
        #Dateiname Normalisieren
                
        $filename CE_FRONTEND::normalizeUploadFileName($filename);    
                
                
        #Datei wird in das temporäre Verzeichnis kopiert 
                
        move_uploaded_file($filename_tmpFILEUPLOADDIR_TMP.$filename);
                
                
        #Überprüfung ob der Dateiname bereuts im Upload Ordner existiert
                
        $checkfilenameexists CE_FRONTEND::checkFileIsAvailableInDir(FILEUPLOADDIR$filename);
                
                if(
        $checkfilenameexists == CE_FRONTEND::UploadFileExists && !$overwritefile){    
                
                        return array(
        "fileexists" => TRUE"filename" => $filename);
                        
                } else {
                    
                    
        copy(FILEUPLOADDIR_TMP.$filenameFILEUPLOADDIR.$filename);        
                    
        unlink(FILEUPLOADDIR_TMP.$filename);
                }        
                
                
                return array(
        "uploadsuccess" => TRUE"filename" => $filename);
            } 
        übrigens funktioniert in dem forum der obere "antwort" button nicht.
        nochmals danke

        Kommentar


        • #5
          Zitat von kasIQ Beitrag anzeigen
          hat underbar geklappt
          übrigens funktioniert in dem forum der obere "antwort" button nicht.
          nochmals danke
          Doch, aber nur bis zum T.

          Kommentar


          • #6
            "antwort" button

            table mit id="topics" hängt zu tief!


            setzt einfach in folgendem table das margin-top:15px; noch rein
            "<table cellspacing="0" cellpadding="0" border="0" width="100%" style="margin-bottom: 3px;">"

            dann sollte das auch klappen
            Zuletzt geändert von kasIQ; 10.05.2009, 00:18.

            Kommentar

            Lädt...
            X