php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.03.2009, 15:25  
Erfahrener Benutzer
 
Benutzerbild von Sermon
 
Registriert seit: 04.03.2009
Beiträge: 231
Sermon befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Nach dem Upload die Datei renamen

Moin erstmal alles zusammen

Habe folgende Frage(n):
1. nach dem upload einer Datei möchte ich diese umbennen, ohne deren Bezeichnung zu berühren. sprich sowas wie .exe, .xml, .zip etc.

Ich probier die ganze Zeit schon mit explode und rename rum. komm aber ent wirklich auf nen grünen Zweig.

Schöner wäre es außerdem noch, da kommen wir zu meiner zweiten Frage:
Beim upload der datei. Also wenn sich das "Durchsuchen" Fenster öffnet, soll der Benutzer nur die Wahl haben eine einzige art von Datei auszuwählen.
Außerdem wäre es schön, wenn man überprüfen könnte, ob es sich dann auch wirklich um diese Dateiendung handelt.

Besten Dank schon mal im voraus.

Sermon
Sermon ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.03.2009, 15:37  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Mit explode würds z.b. so gehen :

PHP-Code:
$wunschname "ichbineinetolle";
$filename "abc.def.ghlkdlk.exe";
$endungexplode(" "$filename );
$newfilename$wunschname.".".$endung[count($endung)];
// ergibt ichbineinetolle.exe 
dazu noch move upload file

header überprüfen mit fread. Nicht auf den Mime- Typ verlassen.
rudygotya ist gerade online  
Alt 04.03.2009, 15:39  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Hallo und herzlich willkommen!

ich denke, mit einem regulären Ausdruck kommst du da am schnellsten ans Ziel. Etwa wie dies:
PHP-Code:
preg_match('/^.+\.([^\.)/'$_FILES['xyz']['name'], $matches);
$newFileName'anderername.' $matches[1]; 
Noch schneller ginge es sogar so:
PHP-Code:
$newFileName 'anderername' strrchr($_FILES['xyz']['name'], '.'); 
Dein anderes Problem lässt sich nicht lösen, da du keinen Einfluss auf den Browser hast.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems

Geändert von Manko10 (04.03.2009 um 15:42 Uhr).
Manko10 ist offline  
Alt 04.03.2009, 15:53  
Erfahrener Benutzer
 
Benutzerbild von Sermon
 
Registriert seit: 04.03.2009
Beiträge: 231
Sermon befindet sich auf einem aufstrebenden Ast
Standard

Also... ich hab das mal ausprobiert und zeig euch jetzt erstmal meinen auszug aus dem QT:

PHP-Code:
<?php
if($_REQUEST['Send'])
{
    if(
$_FILES['Datei']['tmp_name'])
    {
        echo 
"Ihre Datei &quot;<b>",
             
$_FILES['Datei']['name'],
             
"</b>&quot; wurde erfolgreich hochgeladen ";
             
move_uploaded_file($_FILES['Datei']['tmp_name'], "upload/".$_FILES['Datei']['name']);

        
$newFileName 'IHK'.strrchr($_FILES['xml']['name'], '.');
    }
    else
    {
        echo 
"Bitte geben Sie eine Datei an!";
    }
}
Funktionieren tut es immer noch nicht... :/
Außerdem würde es mich interessieren, ob man die erfolgsmeldungen auch in so einer infobox ausgeben kann. So wie das bei Windows der Fall ist.
Oder geht das nur mit Hilfe von JavaScript?

Geändert von Sermon (04.03.2009 um 16:09 Uhr). Grund: was vergessen
Sermon ist offline  
Alt 04.03.2009, 16:20  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
PHP-Code:
$newFileName 'IHK'.strrchr($_FILES['xml']['name'], '.'); 
Die Variable enthält natürlich nur den neuen Dateinamen. Diesen musst du dann in move_uploaded_file() benutzen. Also muss der neue Dateiname natürlich zuerst gebildet werden. Wenn du den neuen Namen nicht verwendest, passiert natürlich auch nichts weiter.

Alter-Boxen kannst du nur mit JavaScript ausgeben und ich halte eine solche Bestätigung nicht unbedingt für sinnvoll.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 04.03.2009, 16:46  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Also wenn sich das "Durchsuchen" Fenster öffnet, soll der Benutzer nur die Wahl haben eine einzige art von Datei auszuwählen.
Außerdem wäre es schön, wenn man überprüfen könnte, ob es sich dann auch wirklich um diese Dateiendung handelt.
Für ersteres gibt es das accept Attribut, unterstützt allerdings niemand(? Jedenfalls weder Firefox noch IE)

Du kannst den aktuellen Wert per Javascript im onchange-Handler überprüfen
Code:
<html>
  <head>
    <script type="text/javascript">
      function foo(id, suffix) {
        var s = document.getElementById(id).value
        if ( suffix !=s.substr(s.length-suffix.length) ) {
          alert('xyz');
        }
      }
    </script>
  </head>
  <body>
    <form method="post" action="?">
      <div>
        <input type="file" name="blub" onchange="foo('bar','.xml')" id="bar">
        <input type="submit" />
      </div>
    </form>
  </body>
</html>
Das alert() ist aber nur ein einfaches Beispiel. Im Echtbetrieb wäre das sehr nervig.
Um eine server-seitige Validierung muss trotzdem erfolgen.
David ist offline  
Alt 04.03.2009, 16:54  
Erfahrener Benutzer
 
Benutzerbild von Sermon
 
Registriert seit: 04.03.2009
Beiträge: 231
Sermon befindet sich auf einem aufstrebenden Ast
Standard

hab ich jetzt geändert. funktioniert auch. allerdings schmeißt er die Endung weg (.exe). wollte diese allerding beibehalten...
@Manko10
Sermon ist offline  
Alt 04.03.2009, 17:14  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Nur aus Neugierde: was spricht denn gegen meine Lösung?

Außer, das der Zeiger um eins erniedrigt werden muß ^^

so gine es doch auch ohne preg_match.
PHP-Code:
$wunschname "ichbineinetolle";
$filename "abc.def.ghlkdlk.exe";
$endungexplode("."$filename );
var_dump($endung);
$i count($endung) -1;
$newfilename$wunschname.".".$endung[$i];
echo 
$newfilename;
// ergibt ichbineinetolle.exe 
rudygotya ist gerade online  
Alt 04.03.2009, 17:28  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

@Sermon: Weil du aus meinem Platzhalter xyz, der für den Namen deiner Datei steht (hier: Datei) ein xml gemacht und dieses in den Code übernommen hast.

@rudygotya: Geht auch, aber die Regex-Variante ist kürzer. Außerdem habe ich ja noch eine zweite noch kürzere Alternative ohne RegEx genannt. Deine Lösung ist einfach unnötig lang.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 04.03.2009, 20:19  
Erfahrener Benutzer
 
Benutzerbild von Sermon
 
Registriert seit: 04.03.2009
Beiträge: 231
Sermon befindet sich auf einem aufstrebenden Ast
Standard

Danke Manko! läuft alles super
Du kannst mir bestimmt bei noch mehr sachen helfen habe ich so das gefühl^^
Sermon ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Upload Problem einer ZIP Datei sven2oo8 PHP-Fortgeschrittene 4 23.07.2008 23:54
bild upload mit txt datei djma PHP Tipps 2006 7 24.05.2006 18:37
Wo bleibt die temporäre Datei beim Upload ggfan PHP Tipps 2006 5 31.03.2006 23:45
PHP Datei Upload Temp-Verzeichnis verlegen php1 PHP-Fortgeschrittene 11 07.02.2006 21:37
Datei Upload Frage imagica PHP Tipps 2006 3 17.01.2006 09:10
Datei Upload sammt Dateisplittung PHP Tipps 2007 4 09.12.2005 12:08
Datei Upload sammt Dateisplittung PHP Tipps 2007 1 09.12.2005 11:36
Datei beim Upload umbenennen ... PHP Tipps 2005-2 8 04.10.2005 14:45
Datei Upload mit PHP via FTP Calli PHP Tipps 2005-2 5 22.07.2005 15:01
Problem mit Datei upload PHP Tipps 2005 16 24.03.2005 00:23
Datei beim Upload verschieben? PHP Tipps 2004-2 8 15.12.2004 21:16
Datei upload klappt nicht wishy PHP Tipps 2004-2 10 29.11.2004 13:04
[Erledigt] Datei Upload! alle Dateien zulassen PHP Tipps 2004 8 08.11.2004 20:15
Nach datei Upload den namen der datei in DB speichern?? PHP Tipps 2004 14 17.07.2004 15:38
wenn ihr datei upload habt? wo habt ihr webspace? PHP Tipps 2004 6 18.06.2004 20:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datei umbenennen in wunschnamen php, $_files[\xml\]

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum