You are not logged in.

  • Login

1

Thursday, August 30th 2007, 10:42pm

Große Dateien hochladen / File Management

Hallo,

ich poste hier, weil das Thema meiner Meinung nach zu php und Ajax gehört. Bin mir aber nicht ganz sicher.
Ich habe folgendes Anliegen. Ich möchte ein Formular schreiben, das es dem User erlaubt nicht nur kleine Dateien hochzuladen, sondern auch große Dateien, die über die Grenze der in der php.ini festgelegten Werte hinausgehen.
Nun habe ich schon ne ganze Weile gegoogelt und kein wirklichen Programmieransatz gefunden.
Allerdings habe ich den Dienst http://zeta-uploader.de/ gefunden. Bei diesem kann man große Dateien hochladen. Ich habe das ganze mit 25MB ausprobiert. Funktioniert auch und sieht meiner Meinung nach php+ajax aus.
Ich würde lediglich einen ladebalken (wenn auch nur ne animierte grafik) mit einbauen, sonst ist es genau das, was ich mir auch vorgestellt habe.

Hat jemand ne Idee wie man sowas in php+ajax angeht? oder ist es gar nicht das was ich vermute?
Oder kennt jemand eine andere Möglichkeit schnell ein vorhandenes Formular so anzupassen, dasa uch große Dateien handlebar sind?

Danke im Voraus

cya

2

Thursday, August 30th 2007, 11:00pm

ich denke nicht, dass du die PHP Einstellungen überlisten kannst. Das wäre ja ein riesen Sicherheitsproblem.
Da AJAX nur clientseitig Verbindungen aufbau, darf es da auch nicht eingreifen.

Ich würd sagen: No Chance..

php.ini bearbeiten

Source code

1
2
3
max_execution_time = 6000
post_max_size = 50M
upload_max_filesize = 50M


(oder eben über ein Java Applet)

3

Thursday, August 30th 2007, 11:05pm

Du kannst, die Werte der php.ini natürlich ändern und große Dateien und lange Executiontime erlauben, allerdings wird das deinem Webserver nicht besonders gut tun. Musst du überlegen ob du nicht ganz verzichtest und einen anderen Dienst nutzt. Zum Beispiel FTP der dafür ausgelegt ist und das deutlich besser abkann, oder einen anderen - vielleicht ja einen auch eigenen. Zeta ist eine Anwendung (exe) und schickt es per Email wenn ich das richtig gesehen hab. Also auch kein PHP/Ajax.

4

Friday, August 31st 2007, 12:30am

hmmm... applet wäre auch ne Variante, wobei ich glaube der Aufwand ist es nicht wert.

bei zeta ist es ne asp-Anwendung richtig. Das Formular ist da wohl mit eingebaut. Nun gut...
Kann man denn mit den php-Funktionen für ftp die Zeiten aus der ini überlisten? Ich glaube nicht, denn die Datei muss ja trotzdem übers Formular geschickt werden. (Außer man bringt den Usern bei, nen ftp-client zu nutzen)

Naja, ich werd das wohl rausnehmen es der Feature-Liste...
Danke euch!

5

Friday, August 31st 2007, 1:17am

Also meiner Meinung wird die max_execution_time erst aktiv, wenn das Skript wirklich angestoßen wird. Folglich NACH dem upload...

So funktioniert das zumindest bei mir lokal...

6

Friday, August 31st 2007, 8:31am

Hmm,

aber beim Apachen (oder dem entsprechenden Gegenstück) gibt es doch sicherlich auch solche Werte um sich vor Angriffen zu schützen?
Naja, ich werd die Idee wohl eh verwerfen, da man ja auch nen recht großen Webspace/Server braucht, wenn die User so einiges hochladen...

Nun gut

cya

7

Friday, August 31st 2007, 11:33am

HTML-Formulare belasten bei Datei-Upload den Webserver immer mehr als Protokolle die dafür gemacht sind. FTP kannst du mit Formularen gar nicht nutzen, da brauchst du eine eigene Anwednung für (Applet o.ä. etc). Zeita ist nur teilweise in ASP geschrieben, das Fenster was man auf dem Screenshot sieht sicher nicht.

8

Friday, August 31st 2007, 12:54pm

Ja, das Fenster mein ich ja auch nicht.
Ich red ja ausschließlich von dem Online-Dienst. Also dem Formular.

9

Friday, August 31st 2007, 1:04pm

a) Auch ein Applet braucht in den meisten Fällen ein PHP-Script was im Hintergrund den Upload übergeben bekommt. Mag sein, dass es auch Varianten gibt, die dann die Dateien direkt per FTP hochladen, aber das sehe ich definitiv als Sicherheitsrisiko, da die Zugangsdaten dann ja im Applet gespeichert sind.

b) Du kannst die php.ini Werte übrigens auch für jeden vhost einzeln setzen/ändern.

c) Eventuell kannst du die Werte auch während der Ausführung über:
ini_set( "post_max_size", "50M");
etc.

10

Friday, August 31st 2007, 1:07pm

a) Auch ein Applet braucht in den meisten Fällen ein PHP-Script was im Hintergrund den Upload übergeben bekommt. Mag sein, dass es auch Varianten gibt, die dann die Dateien direkt per FTP hochladen, aber das sehe ich definitiv als Sicherheitsrisiko, da die Zugangsdaten dann ja im Applet gespeichert sind.
Man könnte für jeden Upload nen eigenen Account erzeugen - Dann hätte niemand auf Daten Zugriff, auf die er keinen Zugriff haben darf...

11

Friday, August 31st 2007, 1:15pm

Man könnte für jeden Upload nen eigenen Account erzeugen - Dann hätte niemand auf Daten Zugriff, auf die er keinen Zugriff haben darf...
Bedenke: Auch hier werden Daten übertragen, viel schlimmer kann jemand dein Script was die Accounts erstellt für eigene Zwecke nutzen. Du musst eigentlich sogar Systembenutzer anlegen, da mir kein FTPd bekannt ist, der ohne Systemnutzer selbigen in ein Jail sperrt und du willst ja wohl nicht, dass deine Accounts Zugriff auf den kompletten Server haben. Darüber hinaus muss der FTPd auch das setzen von diversen Limits unterstützen.

12

Friday, August 31st 2007, 1:17pm

FTPd kann man meines Wissens auch mit ner MySQL Tabelle verwalten, ohne System Benutzer anzulegen.

13

Friday, August 31st 2007, 1:22pm

Mit FTPd meinte ich jetzt eher einen beliebigen ftp-daemon ;)
Die Frage ist dann auch, ob die mysql-Benutzer dann auch in einem Jail sind, oder ob sie (zumindest read) Zugriff auf den kompletten
Server haben.

14

Friday, August 31st 2007, 2:23pm

Ja, das geht alles, habe es selber laufen und nach dem HowTo gemacht, bin sehr zufrieden damit. http://www.khoosys.net/single.htm?ipg=848
Kannst auch Bandbreite einstellen, damit bei einem Upload/Download dein Server nicht stirbt.

15

Friday, August 31st 2007, 3:31pm

Ok, und was genau machst du damit? Deinen Usern nen Upload ermöglichen?
Wie genau läuft denn das? Also wie ist die Architektur dieser "Software"? Kann mir das nicht wirklich vorstellen.

Davon mal abgesehen, ich habe (noch) keinen eigenen Server, sodass ich eh kein proftp installieren kann.


cya

This post has been edited 1 times, last edit by "mad" (Aug 31st 2007, 3:37pm)


16

Saturday, September 1st 2007, 1:55am

Ok, und was genau machst du damit? Deinen Usern nen Upload ermöglichen?
Wie genau läuft denn das? Also wie ist die Architektur dieser "Software"? Kann mir das nicht wirklich vorstellen.

Davon mal abgesehen, ich habe (noch) keinen eigenen Server, sodass ich eh kein proftp installieren kann.


cya

Jetzt könntest du dir z.B. ein Java Applet suchen was die Uploads mittels FTP durchführt (und im Idealfall noch für jeden Upload einen Benutzer anlegen kann) und deinen Benutzern eine Uploadmöglichkeit anbieten.
Problem ist hier, insbesondere wenn du keinen eigenen Server hat, dass Software nachinstalliert werden muss.

Ob proftpd jetzt das non-plus-ultra an Skalierbarkeit und (wohl eher) Sicherheit ist sei jetzt mal dahingestellt ;)

Ich für meinen Teil würde das auf Basis von einem regulären HTTP-Upload realisieren, auch ein Apache sitzt das auf einer Arschbacke ab und wenn es wirklich mal zu Engpässen in Bezug auf Performance kommen sollte, dann würde ich eher auf einen hochperformanten Webserver a la lighttpd anstatt auf den ftp krams setzen.

17

Saturday, September 1st 2007, 12:13pm

Kann da nich viel mitreden (AJAX erst wenig Wissen), aber vllt. hilft dir das: http://www.webdice.org/uber_uploader/ ;)

18

Sunday, September 2nd 2007, 12:22am

Interessant, aber im online-beispiel auch auf 5mb begrenzt.
Wobei die Möglichkeit mit mehreren inputs auch ein Ansatz ist. Müsste man mal testen.
Danke dir!

cya

Similar threads

Social bookmarks