Warum kostenlos registrieren?

Nur als registriertes Mitglied hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du eigene Fragen stellen und hast die volle Übersicht über neue interessante Themen im Forum.
Jetzt kostenlos registrieren.

Login


Dateiupload mit unterschiedlichen Angaben?

Anfänger? Kein Problem einfach hier fragen, wir helfen euch!

Dateiupload mit unterschiedlichen Angaben?

Beitragvon DjSilverbell am 18.10.2006, 12:03

Hallo!


Ich habe jetzt schon auf vielen Seiten und auch bei Google nach einer Möglichkeit gefunden,
ein Upload-Script mit diversen Angabe-Möglichkeiten zu finden.

Leider hatte ich keinen Erfolg. :(



Es geht nämlich darum,
dass ich auf meiner Seite eine Upload-Möglichkeit für Hobbyproduzenten bieten möchte,
so ähnlich wie bei mp3.de.

Es sollten folgende, auszufüllende Angaben da sein:

-Interpret,
-Titel,
-Länge,
-Genre,
-Album,
-BPM
-und eine Checkbox, in der man die Regeln akzeptieren muss, um seinen Track hochzuladen.

WENN es möglich ist, dass die Länge des Tracks automatisch erkannt wird, dann verzichte ich auch gerne auf die Längenangabe :)



Kann mir da jmd ewtas gute empfehlen?
Ist mir super wichtig!

Mfg, Norman
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover


Beitragvon MirkoG am 19.10.2006, 15:40

hmmmm, alles leichter gesagt als getan.
Mit einfach mal "einem script suchen" ist es ja nicht getan.

Um die erhaltenen Daten zu speichern brauchst du ne Datenbank.
Ich gehe mal von MYSQL aus. Dort ein neues Schema erstellen.

Code: Alles auswählen
CREATE DATABASE `mp3_datenbank` /*!40100 DEFAULT CHARACTER SET latin1 */;


In diese Datenbank eine Tabelle, in der

Interpret
Titel
Länge
Genre
Album
BPM
Mp3
Regeln
Datum

gespeichert sind.


Code: Alles auswählen
DROP TABLE IF EXISTS `mp3_datenbank`.`mp3_upload`;
CREATE TABLE `mp3_upload` (
  `Interpret` varchar(100) NOT NULL default '',
  `Titel` varchar(100) NOT NULL default '',
  `Laenge` varchar(45) NOT NULL default '',
  `Genre` varchar(45) NOT NULL default '',
  `Album` varchar(100) NOT NULL default '',
  `BPM` varchar(45) NOT NULL default '',
  `Mp3` varchar(200) NOT NULL default '',
  `Regeln` varchar(45) NOT NULL default '',
  `Datum` timestamp NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`Interpret`,`Titel`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Nun dein HTML-Fomular in der die User ihre Angaben machen und die .mp3 auswählen können.

Code: Alles auswählen
<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
function chkFormular()
{ if(document.Formular.Interpret.value == "")  {
   alert("Bitte den Interpreten eingeben!");
   document.Formular.Interpret.focus();
   return false;
  }
if(document.Formular.Titel.value == "")  {
   alert("Bitte den Titel eingeben!");
   document.Formular.Titel.focus();
   return false;
  }
if(document.Formular.min.value == "")  {
   alert("Bitte die Titel-Länge (min) eingeben!");
   document.Formular.sec.focus();
   return false;
  }
   if(document.Formular.sec.value == "")  {
   alert("Bitte die Titel-Länge (sec) eingeben!");
   document.Formular.sec.focus();
   return false;
  }
if(document.Formular.Genre.value == "")  {
   alert("Bitte das Genre eingeben!");
   document.Formular.Genre.focus();
   return false;
  }
if(document.Formular.Album.value == "") {
   alert("Bitte das Album eingeben!");
   document.Formular.Album.focus();
   return false;
  }
  if(document.Formular.BPM.value == "") {
   alert("Bitte BPM eingeben!");
   document.Formular.BPM.focus();
   return false;
  }
  if(document.Formular.myfile.value == "") {
   alert("Bitte wählen Sie ihre mp3 aus.");
   document.Formular.myfile.focus();
   return false;
  }
}
function abbrechen()
{
location.href="index.html"
}

//-->
</script>
<form name="Formular" action="http://127.0.0.1/cgi-bin/mp3_upload.pl" method="post" enctype="multipart/form-data" onSubmit="return chkFormular()">
<pre><p>
Interpret:    <input type="text" size="25" name="Interpret">
Titel:        <input type="text" size="25" name="Titel">
<br>
Länge:        <input type="text" size="5" name="min"> min <input type="text" size="5" name="sec"> sec
Genre:        <input type="text" size="25" name="Genre">
Album:        <input type="text" size="25" name="Album">
BPM:          <input type="text" size="25" name="BPM">
Mp3:          <input type="file" size="25" name="myfile">
<br>
<input type="checkbox" name="Regeln" value="Regeln"> Ich habe die Regeln gelesen und bin einverstanden !
<br>
              <input type="submit" value="Absenden" onClick="absenden()">&nbsp;<input type="reset" value="Abbrechen" onClick="abbrechen()">
</form>
</pre></p>
</body>
</html>


Die Daten werden an ein Perl_script namens "mp3_upload.pl" übergeben.

Code: Alles auswählen
#!C:/Perl/bin/perl.exe -w

use strict;
use CGI; # Modul fuer CGI-Programme
use DBI;

my $dbh = DBI->connect( 'dbi:mysql:mp3_datenbank:', 'root', 'dein_passwort') ||
     die "Kann keine Verbindung zum MySQL-Server aufbauen: $DBI::errstr\n";


my $cgi = new CGI; # neues Objekt erstellen

# Content-type fuer die Ausgabe
print $cgi->header(-type => 'text/html');

# die datei-daten holen
my $file = $cgi->param("myfile");
my $Interpret = $cgi->param("Interpret");
my $Titel = $cgi->param("Titel");
my $Laenge_min = $cgi->param("min");
my $Laenge_sec = $cgi->param("sec");
my $Genre = $cgi->param("Genre");
my $Album = $cgi->param("Album");
my $BPM = $cgi->param("BPM");
my $Regeln = $cgi->param("Regeln");

my $Laenge = "$Laenge_min:$Laenge_sec";

# dateinamen erstellen und die datei auf dem server speichern
my $fname = 'file_'.$$.'_'.$ENV{REMOTE_ADDR}.'_'.time.'.mp3';
open DAT,'>'.$fname or die 'Error processing file: ',$!;

my $sth = $dbh->prepare('insert into mp3_upload values(?, ?, ?, ?, ?, ?, ?, ?, current_timestamp())') ||
       die "\n";
$sth->execute($Interpret, $Titel, $Laenge, $Genre, $Album, $BPM, $fname, $Regeln) ||
       die "\n";


# Dateien in den Binaer-Modus schalten
binmode $file;
binmode DAT;

my $data;
while(read $file,$data,1024) {
  print DAT $data;
}
close DAT;



print <<"HTML";
<html>
<head>
<title>Fileupload</title>
</head>
<body bgcolor="#FFFFFF">

<p>
Die Datei $file wurde erfolgreich auf dem Server
   gespeichert.
   <br><br>
$Interpret
<br>
$Titel
<br>
$Laenge
<br>
$Genre
<br>
$Album
<br>
$BPM
<br>
$Regeln
<br>
$fname
  </p>
</body>
</html>
HTML


Das alles funktioniert.
Teste einfach ein wenig und wenns irgendwo klemmt, dann stell die richtigen Fragen.
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 23.10.2006, 22:43

Ich habe jetzt eine richtige Frage, bzw. gleich 2 :)

Wie können sich denn andere Leute nun die hochgeladenen Tracks runterladen?

Und wo werden die hochgeladenen Tracks denn gespeichert?
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 24.10.2006, 11:56

"Und wo werden die hochgeladenen Tracks denn gespeichert?"


Im Verzeichnis, in dem die mp3_upload.pl arbeitet.

"Wie können sich denn andere Leute nun die hochgeladenen Tracks runterladen?"


Dies wäre dann schon eine neue Funktion.
Denkbar über ein Formular in dem nach Titel und/oder Interpret gesucht wird (sind ja in der Datenbank gespeichert) und dann in den Ergebnissen dieser Suche, ein Downloadlink generiert wird.

---------------------------------------------------------------------------

Ich möchte darauf noch nicht ausführlich eingehen, denn ich denke du hast den Upload noch nicht "im Griff". Erkennbar daran, das du nicht weißt wo die Titel landen.

Zur Abwechslung mal ein paar Fragen von mir:

1. Welches Betriebssystem benutzt du auf deinem Webspace ?
2. Hast du eine Mysql-Datenbank installiert ?
3. In welcher Sprache ist deine Webseite geschrieben ?
4. Welche Kenntnisse darf man bei dir voraussetzen ?
5. Konntest du alle Schritte des Uploads erfolgreich nachvollziehen ?
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 28.10.2006, 17:30

Danke erstmal für die Antworten!

Ich habe jetzt aber erstmal ein Problem, was sich noch vor die beiden Fragen stellt:

Wenn ich alles eingebe und eine Datei aussuche, dann auf ,,Senden" klicke, kommt unten links die Fehlermeldung, dass in Zeile 69 Zeichen 1 ein Objekt erwartet wird. Datei: index.html


Dann, wenn die Seite weiter lädt, kommt folgendes:

Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Premature end of script headers: mp3_upload.pl

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 500

www.electro-line.de
Sat Oct 28 17:26:43 2006
Apache/2.0.53 (Linux/SUSE)


Muss ich da irgendwie noch was besonderes am Server machen?
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 28.10.2006, 17:37

Poste bitte

Zeile 69 deiner index.html

-----------------------------------------------------

die mp3_upload.pl sollte die Rechte 755 und der gleichen Gruppe+User zugeordnet sein unter der auch dein Webserver läuft.
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 28.10.2006, 17:47

Code: Alles auswählen
<input type="submit" value="Absenden" onClick="absenden()">&nbsp;<input type="reset" value="Abbrechen" onClick="abbrechen()">


Ich sehe oben zwar

Code: Alles auswählen
}
function abbrechen()
{
location.href="index.php"
}


Aber nix für Absenden, ist das denn normal?


Edit:
die mp3_upload.pl sollte die Rechte 755 und der gleichen Gruppe+User zugeordnet sein unter der auch dein Webserver läuft.


Wie meinst du das mit den Gruppen und Usern?
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 28.10.2006, 18:02

Ja ist normal. "Abrechen" ist nur näher definiert, damit man mit diesem Buttom wieder zum index zurückkommt.

Allerdings hast du hier von .html in .php geändert, was mir dann schonmal eine meiner Fragen beantwortet. Von php habsch keinen Plan und mein Bsp. (Formular) ist in .html verfasst.

Sollte der Fehler daher rühren (Zeile 69 Zeichen 1 ein Objekt erwartet wird. Datei: index.html), kannsch dir nix zu sagen, weil ich kein Plan habe von php.

-----------------------------------------------------------------------------------

Hast du das Formular getestet, ohne es in eine deiner Seiten eingebunden zu haben ? und auch wirklich als .html !

------------------------------------------------------------------------------------

EDIT:

Wie meinst du das mit den Gruppen und Usern?


Ich gehe von LINUX aus. Und somit ist auch eine weitere Frage beantwortet. Tu mir den gefallen die anderen auch noch zu beantworten. Dann ist uns beiden schon viel geholfen.
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 29.10.2006, 00:32

Also ich habe die Dateien sowohl in html als auch mit der Dateiendung .php versucht, hat beides nicht geklappt.

Und die Fehlermeldung kam auch immer abhängig davon, wie sie hieß...

war es die index.php hieß es demnach
Zeile 69 Zeichen 1 ein Objekt erwartet. Datei: index.php

und bei .html
Zeile 69 Zeichen 1 ein Objekt erwartet. Datei: index.html

-----------------------------------------------------------------------


Getestet habe ich die Seite ausschließlich ohne sie in eine Seite einzubinden...

Der direktpfad ist: www.electro-line.de/music-line/index.html
oder auch /upload.html

-----------------------------------------------------------------------


Waren das denn alle Fragen oder habe ich eine übersehen?
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 29.10.2006, 12:00

1. Hast du eine Mysql-Datenbank installiert ?
- vorgegebenes Schema/Tabelle angelegt ?
2. Ist Perl auf dem Server installiert ?
3. Welche Kenntnisse darf man bei dir voraussetzen ?

--------------------------------------------------------------------

Falsch

<form name="Formular" action="mp3_upload.pl" method="post" enctype="multipart/form-data" onSubmit="return chkFormular()">

Richtig

<form name="Formular" action="http://127.0.0.1/cgi-bin/Dein_Unterordner/mp3_upload.pl" method="post" enctype="multipart/form-data" onSubmit="return chkFormular()">

.pl / .cgi - werden nur aus dem Ordner cgi-bin ausgeführt. (bei standartmäßig eingestellten Webserver)
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 30.10.2006, 04:18

1. Hast du eine Mysql-Datenbank installiert ?
- vorgegebenes Schema/Tabelle angelegt ?
2. Ist Perl auf dem Server installiert ?
3. Welche Kenntnisse darf man bei dir voraussetzen ?

1. Ja
2. Ja
3. In wie fern?


Falsch

<form name="Formular" action="mp3_upload.pl" method="post" enctype="multipart/form-data" onSubmit="return chkFormular()">

Richtig

<form name="Formular" action="http://127.0.0.1/cgi-bin/Dein_Unterordner/mp3_upload.pl" method="post" enctype="multipart/form-data" onSubmit="return chkFormular()">


Achso! Werde es mal so probieren!

pl / .cgi - werden nur aus dem Ordner cgi-bin ausgeführt. (bei standartmäßig eingestellten Webserver)


Ich habe meinen Server so eingestellt, dass man sowohl im cgi-bin-Verzeichnis als auch ausserhalb .pl und .cgi-Dateien aufrufen kann.




Edit:
Der neue Pfad zur Datei ist jetzt

http://www.electro-line.de/cgi-bin/music/index.html

Aber es funktioniert nicht!
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 30.10.2006, 11:45

Edit:
Der neue Pfad zur Datei ist jetzt

http://www.electro-line.de/cgi-bin/music/index.html


hmmmmmmmmm, die index.html bleibt in htdocs !!!

---------------------------------------------------------------------------------

3. Welche Kenntnisse darf man bei dir voraussetzen ?

3. In wie fern?


Damit man weiß, auf welchem Niveau man dir etwas erklären muss. Bringt ja nix dir 1+1 zu erklären, obwohl du schon bis 1.000.000 zählen kannst, und umgekehrt.

---------------------------------------------------------------------------------

Nochmal einen Schritt zurück.
die mp3_upload.pl sollte die Rechte 755 und der gleichen Gruppe+User zugeordnet sein unter der auch dein Webserver läuft
Sehe gerade das dein Server ja unter Linux läuft.
Deine Nachfrage:
Zitat:
Wie meinst du das mit den Gruppen und Usern?

ist deshalb doch unverständlich. Unter Linux hast du doch deine Benutzer und Gruppen (root, mail, wwwrun, .....) !
Apache läuft standartmäßig als wwwrun in Gruppe www.
Alle Verzeichnis sollen/müssen auch so zugeordnet werden.
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 07.11.2006, 00:56

Sorry wegen der späten Antwort... ich hatte einige probleme mit dem internet, jetzt gehts aber wieder!


Z.T.:

hmmmmmmmmm, die index.html bleibt in htdocs !!!


Ok, habe ich gemacht!

Nochmal einen Schritt zurück.
die mp3_upload.pl sollte die Rechte 755 und der gleichen Gruppe+User zugeordnet sein unter der auch dein Webserver läuft
Sehe gerade das dein Server ja unter Linux läuft.
Deine Nachfrage:
Zitat:
Wie meinst du das mit den Gruppen und Usern?
ist deshalb doch unverständlich. Unter Linux hast du doch deine Benutzer und Gruppen (root, mail, wwwrun, .....) !
Apache läuft standartmäßig als wwwrun in Gruppe www.
Alle Verzeichnis sollen/müssen auch so zugeordnet werden.


Soviel zu meinen Kenntnissen...
Das ist schon wieder zu hoch für mich :oops:

Mit CHMOD und den unterschiedlichen Rechten kenne ich mich aus, aber mit Gruppen wie root, mail und wwwrun kann ich leider überhaupt nix anfangen :(


Edit:
Habe jetzt nochmal alles abgearbeitet, was du mir bisher gesagt hast.
Wenn ich jetzt auf der Upload-Seite auf ,,Absenden" klicke, kommt folgende Fehlermeldung nach der Weiterleitung:

Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Premature end of script headers: mp3_upload.pl

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 500
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Beitragvon MirkoG am 07.11.2006, 09:12

Diese Meldung kommt ebend (vermutlich / höchstwahrscheinlich)
genau deswegen, dass die Datei mp3_upload.pl ihre Aufgaben nicht
erfüllen kann (Schreiben der hochgeladenen Datei), weil sie nicht die Rechte dazu hat.

Geh als root auf deinen Server (Cmd)

- wechsle in dein Verzeichnis
cd Dein_Apache_Webserver/cgi-bin/music
- schau nach wem was gehört und welche Rechte er hat
ls -al
- ändere (wenn nötig) User / Group / Rechte
chown wwwrun.www mp3_upload.pl
chmod 755 mp3_upload.pl

eventuell ist auch das ganze Verzeichnis (music) davon betroffen, dann musst du
die angegebenen Schritte für das verzeichnis (und dessen Inhalt) tun.
music/*
MirkoG
 
Beiträge: 193
Registriert: 29.06.2004, 14:21

Beitragvon DjSilverbell am 07.11.2006, 23:44

Hallo Mirko!

Ich habe eben eine Anfrage bei meinem Anbieter gemacht und ihm einen Teil deiner Anleitung (den letzten Post) gegeben.

Er meinte, dass ich keinen Root-Zugriff habe und bekomme und das ich mit php arbeiten muss :(
DjSilverbell
 
Beiträge: 1135
Registriert: 10.09.2005, 17:15
Wohnort: Hannover

Nächste


Ähnliche Themen


Zurück zu Webmaster-Anfänger

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste