Logo - MyWebsolution.de
User gesamt  :  1669000
User online  :  3
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » Anfängerfragen PHP und MYSQL » Up- und Download von Dateien..

Seite: 1 2 3 4 5  > Posts pro Seite: 5 10 20
Autor Thread
26.01.2007 18:07 Uhr Up- und Download von Dateien..
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Für viele die Schlagzeug spielen, ist es sehr mühsam Noten von verschiedenen Songs zu finden. Und für die wie mich, die nicht ganz der Profi sind, ist es auch zu schwierig sie selbst herauszuhören und sie zu schreiben. Also hab ich mir gedacht, mach ich ne Page, bei denen alle die Noten downloaden, jedoch nur registrierte user die Noten uploaden können, um so ein grosses Notenarchiv zu erschaffen. Sie ist eigentlich schon fast fertig, doch das wichtigste fehlt noch: Die Up- und Download seiten selbst.

Da ich noch keine Ahnung habe wie Uploadskripts gehen, brauche ich tutorials. Hat jemand schon solche gesehen oder kann mir einer gute empfehlen?

Wie ich das ganze umsetzen soll, muss ich mir auch noch genauer überlegen, vielleicht könnt ihr mir da auch weiterhelfen.

Ich mir das ganze irgendwie so vorgestellt:
Der User kann in einem fomular interpret, album, songname eingeben und schliesslich die dazugehörige datei auswählen. Wenn der das hochgeladen hat, muss ich es in meinem admin menü noch bestätigen und dann erscheint es auf der download seite in man zuerst der name anklickt, dann erscheint das album und schliesslich die songs wo er es downloaden kann.

Ich weiss noch nicht wie ich das anpacken soll, hoffe ihr helft mir... :(

gruss mdean
Profil ansehen
26.01.2007 20:24 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
Hey,

ein Schlagzeuger, ist ja cool, ich bekomme meins nächste woche. *freu*

Naja, zu deinem Problem. Du hättest sicherlich was über google gefunden.
Zum hochladen allgemein:
http://www.php-einfach.de/tuts_php_datei_upload.php
http://www.it-academy.cc/article/1359/PHP:+Upload+per+HTTP.html
http://www.informationsarchiv.net/foren/beitrag-9942.html

Wie du das Problem löst:
Natürlich bekommen nur registrierte Benutzer die möglichkeit dateien hochzuladen, wurde die datei erfolgreich hochgeladen und die daten in der datenbank festgehalten, schickst du dir über dein system eine mail, die bei bestätigung, die hochgeladenen informationen freischaltet.

Hier findest du sicherlich scripte für alle deine benötigten Funktionen.
http://www.phpclasses.org/

also, nichts neues!

Viel Glück
Negura
Profil ansehen
28.01.2007 17:18 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Hmm ich hab jetzt ne andere Idee. Ich benütze fogendes Formular:

Interpret:
Album:
Songname:
Datei:

Wenn die Überprüfung fertig ist, und alles ok ist, erstellt es z.b. in einem ordner names upload, ordner. Und zwar zuerst den Interpretname, dann in diesem den albumnamen, und schliesslich in diesem alle songs.

Wenn das gemacht ist schreibt es auch noch interpret, album, songname und der user der es heraufgeladen hat, in meine DB. Anschliessend werde ich dann, die songs manuell in die downloadpage einfügen. Die DB brauche ich um zu sehen, welcher user, welche dateien heraufgeladen hat, um z.b. wenn er irgendwelche dummen sachen heraufgeladen hat, sein account dann zu löschen.

Bis jetzt hab ich aber nur die Idee... wie ich das verwirklichen soll weiss ich nicht.
Profil ansehen
28.01.2007 23:42 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
Anschliessend werde ich dann, die songs manuell in die downloadpage einfügen.


Schlechte Idee. Manuell geht dir irgendwann auf die nerven, erfahrungsgemäß ;)

Ich würde es folgendermaßen machen:

Formular anzeigen mit

- Interpret
- Album
- Songname
- Datei

Prüfungen beim Abschicken
- Ist der User eingeloggt
- Ist "Interpret" angegeben
- Ist "Songname" angegeben
(Album ist, denke ich, optional?)
- Hat die Datei
> die richtige Größe
> die richtige Endung
(evtl. den richtigen Mime-Typ)

Bei erfolgreicher Prüfung
- Datei umbenennen (time() und random())
- Datei in den Ordner ähm.. "noten" verschieben
- Daten in Datenbank speichern
> ID
> User ID
> neuer Dateiname
> Interpret
> Album
> Songname
> Freigabe (nicht im Query angeben, damit NULL eingefügt wird)
(evtl. den Timestamp, wegen Aktualitätsanzeige)

Downloadseite
- Datenbank auslesen, (WHERE Freigabe IS NOT NULL)
- Link erzeugen <a href="noten/$row['Dateiname']">$row['Interpret'] - $row['Songname'] ( $row['Album'] )</a>

So halt als grobe Übersicht, wie ich an die Sache rangehen würde. Musst dir halt die einzelnen Teilaufgaben vornehmen und ausprobieren.


Profil ansehen Mail senden
31.01.2007 15:11 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Hm ok danke ich werds mal versuchen. Was genau meinst du mit Datei umbenennen? Was bezweckt das?

mdean
Profil ansehen
31.01.2007 21:16 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
mit umbenennen meine ich, nen zufallsnamen erzeugen.
Ansonsten müsstest du jedesmal prüfen, ob bereits eine Datei mit dem Namen existiert.

Beispiel:

Die Datei eines Users heißt Interpret1 - Song1
eine andere Datei heißt Interpret1 - Song2

-> kein Problem

aber, die nächste Datei ist meinetwegen von nem anderen Album und heißt auch wieder
Interpret1 - Song1, dann wird die erste Datei überschrieben, weil nicht 2 Dateien mit dem gleichen Namen im gleichen Ordner existieren dürfen.


Profil ansehen Mail senden
01.02.2007 18:37 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
aha ok danke..

Bräuchte noch Hilfe bei einzelnen Codeschnipsel:

1. Wie Prüfe ich ob überhaupt eine Datei ausgewählt wurde?

2.Wie übergebe ich am Schluss den Namen des Users, der die Datei geladen hat in die DB?
'".mysql_real_escape_string(trim(???))."' ;

3. Den Mime-Typ von Bildern ist ja z.B. image/pjpeg. Weisst du wie derjenige von pdf ist?

Hoffe ich nerve nicht zu fest mit meinen FragenxD
mdean
Profil ansehen
01.02.2007 20:25 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
1. Wie Prüfe ich ob überhaupt eine Datei ausgewählt wurde?


Wenn keine Datei ausgewählt wurde, wird eine Fehlermeldung erzeugt (glaube Fehlernummer 4).

Zitat:
2.Wie übergebe ich am Schluss den Namen des Users, der die Datei geladen hat in die DB?
'".mysql_real_escape_string(trim(???))."' ; ;


Naja, also ich gehe mal davon aus, dass ein User eingeloggt sein muss, also kennst du ja seine ID ($_SESSION['UserID'] oder so). Mit der ID kannst du den Namen doch aus der Datenbank auslesen.

Zitat:
3. Den Mime-Typ von Bildern ist ja z.B. image/pjpeg. Weisst du wie derjenige von pdf ist?


http://de.selfhtml.org/diverses/mimetypen.htm#uebersicht

Allgemein verwende ich zur Formularprüfung folgende Funktion:

PHP:
<?php
    
function checkUpload($_FILES$maxsize)
    {
         
$key key($_FILES);
         
$errors = array();
         
// Uploadfehler prüfen
         
switch ($_FILES[$key]['error']){
                case 
1$errors[] = "Bitte w&auml;hlen Sie eine Datei aus, die <b>kleiner als ".$maxsize/(1024*1024)." MB</b> ist.";
                         break;
                case 
2$errors[] = "Bitte w&auml;hlen Sie eine Datei aus, die <b>kleiner als ".$maxsize/(1024*1024)." MB</b> ist.";
                         break;
                case 
3$errors[] = "Die Datei wurde nur teilweise hochgeladen.";
                         break;
                case 
4$errors[] = "Es wurde keine Datei ausgew&auml;hlt.";
                         break;
                default : break;
        }
        
// Dateigröße prüfen
        
if($_FILES[$key]['size'] > $maxsize)
            
$errors[] = "Bitte w&auml;hlen Sie eine Datei aus, die <b>kleiner als ".$maxsize/(1024*1024)." MB</b> ist.";

         return 
$errors;
    }
?>


$_FILES ist das Array aus dem Upload und $maxsize die maximale Dateigröße in Byte


Profil ansehen Mail senden
02.02.2007 13:18 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Hab mal versucht etwas zu schreiben, aber es funktioniert noch nicht. Hab ich was falsch gemacht?

Hier der code:
PHP:
<?
    error_reporting
(E_ALL);
    include 
'../conect.php';

    
$connid = @mysql_connect($MYSQL_HOST$MYSQL_USER$MYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
    
    if(isset(
$_POST['Send_x']) AND $_POST['Send_x'] == "Upload") {
            
            
$errors = array();

            
// Prüft, ob ein Interpret eingegeben wurde
            
if(trim($_POST['Interpret'])=='')
                
$errors[]= "Bitte geben Sie den Namen des Interpreten an.";
            
// Prüft, ob der Interpret mindestens 2 Zeichen enthält
            
elseif(strlen(trim($_POST['Interpret'])) < 2)
                
$errors[]= "Der Name des Interpreten muss mindestens 2 Zeichen lang sein";
            
// Prüft ob ein Album angegeben wurde
            
if(trim($_POST['Album'])=='')
                
$errors[]= "Bitte geben Sie den Namen des Albums an.";
            
// Prüft ob ein Songname eingegeben wurde
            
if(trim($_POST['Songname'])=='')
                
$errors[]= "Bitte geben Sie den Titel für den Song an.";
            
            
// Prüft ob der richtige Mime Typ vorliegt
            
$erlaubte_typen = array('image/pjpeg',
                                    
'image/jpeg',
                                    
'application/pdf'
                                   
);
                if(!
in_array($_FILES['datei']['type'], $erlaubte_typen))
                    
$errors[] = "Der Mime-Typ ihrer Datei ist verboten.";
            
            
// Prüft ob die Datei die richtige Endung hat
            
$erlaubte_endungen = array('jpeg',
                                       
'jpg',
                                       
'pdf'
                                      
);
                                      
             
$endung strtolower(substr($_FILES['datei']['name'], strrpos($_FILES['datei']['name'], '.')+1));
                    if(!
in_array($endung$erlaubte_endungen))
                        
$errors[] = "Die Dateiendung muss .jpeg .jpg oder .pdf lauten. ";
            
            
// Prüft ob die Datei die richtige grösse hat
            
if($_FILES['datei']['size'] > 5*1024*1024)
                
$errors[] = "Bitte w&auml;hlen Sie eine Datei aus, die kleiner als 5 MB ist.";
                
            if(
count($errors)){
                echo 
"Ihre Datei konnte nicht gespeichert werden.<br>\n".
                     
"<br>\n";
                foreach(
$errors as $error)
                    echo 
$error."<br>\n";
            }
            
            else {
            
            
//Datei speichern
            
$uploaddir 'noten/';
            
            
//Neuen Dateinamen erstellen
            
$Name "DRUM_".substr(microtime(),-8).".".$endung;
            
            
//Upload
            
if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploaddir.$Name)) {
                
$sql "INSERT INTO
                               notes
                               (UserID,
                                 Newname,
                                 Interpret,
                                 Album,
                                 Songname,
                                 Date
                                 )
                        VALUES
                                ('"
.mysql_real_escape_string(trim($_SESSION['UserID']))."',
                                 '"
.mysql_real_escape_string(trim($Name))."',
                                 '"
.mysql_real_escape_string(trim($_POST['Interpret']))."',
                                 '"
.mysql_real_escape_string(trim($_POST['Album']))."',
                                 '"
.mysql_real_escape_string(trim($_POST['Songname']))."',
                                 CURDATE()
                                )
                           "
;            
        
                    }
?>
Profil ansehen
02.02.2007 16:46 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
Hab mal versucht etwas zu schreiben, aber es funktioniert noch nicht. Hab ich was falsch gemacht?


Schwer zu sagen, was genau soll denn passieren und was passiert nicht?
Gibts ne Fehlermeldung?
Steht error_reporting(E_ALL); am Anfang?

Allgemein fällt auf, dass du den Query nicht ausführst, also es fehlt sowas wie mysql_query($sql);

Wie sieht dein Formular denn aus, hast du in der Definition auch enctype="multipart/form-data" stehen und die Uploadfelder richtig benannt/definiert?


Profil ansehen Mail senden
Seite: 1 2 3 4 5  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik