none
Upload von Großen Dateien geht nicht! RRS feed

  • Frage

  • Hallo,

    erst mal ein paar Infos.

    Ich hab den Server 2008 R2.

    Ich hab eine Upload Seite erstellt die an sich gut Funktioniert.

    Bei kleinen Dateien  Funktioniert alles Prima!

    Bei großen Dateien jedoch nicht.

    Nun bevor Ihr mir sagt ich muss das „maxallowedcontentlength“ einstellen dann sag ich mal gleich „Hab ich“

    Ich hab es direkt im IIS Manager auf 2147483648 eingestellt.

    Sollten so um und bei 2GB sein.

    Aber eine Datei von 30 MB kommt eine leere Seite zurück.

    Er sollte die Datei mit nahmen benenn was bei kleinen Dateien auch geht.

    Die Datei ist auch nicht im Temp Verzeichnis!

    Ist die Datei noch größer (so ab 100MB) gibt er mir eine Fehlermeldung 500 raus.

    Also keine Datei vorhanden und Abriss der Verbindung.

    Ich suche nach den Fehler nun schon 2 Tage!

    Ich hoffe ihr wiest wie das geht!

    Donnerstag, 5. Mai 2011 16:38

Antworten

  • Hi,

    zum einen wäre s wichtig, mit welcher Technologie Du die Uploads serverseitig entgegennimmst.

    ASP.NET?
    Classic ASP?
    PHP?
    ...?

    Generell schau mal bitte in der IIS MMC:

    <Server>

     -> Bereich "IIS"
       -> Feature "Anforderungsfilterung"
         -> Feature-Einstellungen bearbeiten
           -> Maximal zuslässig Inhaltslänge (Bytes)

       -> Feature "ASP"
         -> Verhalten
           -> Limiteigenschaften
             -> Limit für Entitätskörper in Anforderung

    Dann noch das hier:

      http://blog.thomasbandt.de/39/2359/de/blog/iis-7x-uploadlimits-konfigurieren.html

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 5. Mai 2011 17:43
    Moderator
  • Ich habs endlich geschafft*ggg

    Nach 36 Stunden und ich glaube 20 Kannen Kaffee hab ich raus gefunden wie man es richtig macht.

    Als erstes sei gesagt das man absolut keine Änderungen von Hand an den Dateien vornehmen muss/sollte!

    Die einzige Ausnahme ist die PHP.ini

     

    Ich hab nun mal alles auf 2GB eingestellt!

    Das sind in Bytes 2147483648

    Das Timeout hab ich auf 3600 Sekunden eingestellt.

    Somit sollte auch eine langsame Leitung in der Lage sein große Dateien Uploaden zu können.

     

    Als erstes muss man die PHP.ini einstellen.

    Und zwar wie folgt:

    upload_max_filesize = 5000M
    post_max_size = 5000M
    max_execution_time = 3600
    max_input_time = 3600

     

    Wie man unschwer erkennen kann hab ich 500M eingestellt was 5GB sind.

    Das ist aber nicht wirklich schlimm da die Haupteinstellung im IIS gemacht wird.

    So hat man Spielraum!

     

    Ich hab nach der Einstellung den Server neu gestartet.

    Die PHP.ini findet man am besten mit einer PHP Datei in der Ihr folgendes schreibt:

    <?php
    phpinfo()
    ?>
    
    

    Ruft die Datei auf den Server auf und sie zeigt euch alle Einstellung.

    wo sie ligt (Loaded Configuration File).

     

    Nach dem Ihr die Werte dann dort auch wieder findet geht es los mit der eigentlichen Einstellung.

     

    Als erstes mal den Server Manager und dort in den IIS gehen.

    Klickt unter Sites eure Domain an die Ihr einstellen möchtet.

    Als erstes müsst Ihr den Time out einstellen.

    Klickt dazu ganz rechts unter Website verwalten auf Limits…

    Gebt dort unter Verbindugstimeout 3600 ein und klickt auf OK.

    Dann  im großen Fenster unter Verwaltung den Konfigurations-Editor doppelt klicken.

    Oben unter Abschnit sucht Ihr nun „system.webServer/security/requestFiltering“ raus.

    Wenn Ihr das habt seht ihr unteranderen „requestLimits“ mit ein Pluss.

    Klickt auf das Plus.

    Dort unter maxAllowedContentLength gebt Ihr 2147483648 ein.

    Klickt dann irgendwo anders ins Leere.

    Danach noch auf der linken Seite auf Übernehmen klicken und das war es dann auch schon.

     

    So das war es dann auch schon.

    Nun ist die Domain bis 2GB Upload bereit.

    Geht aber nicht für Subdomains.

    Dort müsst Ihr dann das gleich machen.

     

    Für die Rechtschreibfehler endschuldige ich mich mal.

    Hab seit 36Stunden nicht mehr geschlafen und es ist derzeit 1Uhr nachts.

     

    Ich hoffe das wird mal jemanden helfen!

     

    PS: das mit den KiloByte angabe ist nicht notwendig.

    Im gegenteil: das hat mein IIS 7.5 dazu gebracht das er nicht mal Varis per Post mehr übertragen hat und ich den Server komplet neu aufsetzen musste (2Mall)

     

    Dennoch möchte ich mich für die hilfe bedanken!

    Sie hat mich da hin gebracht!

     

    Lg

    JJ

    Freitag, 6. Mai 2011 23:07

Alle Antworten

  • Hi,

    zum einen wäre s wichtig, mit welcher Technologie Du die Uploads serverseitig entgegennimmst.

    ASP.NET?
    Classic ASP?
    PHP?
    ...?

    Generell schau mal bitte in der IIS MMC:

    <Server>

     -> Bereich "IIS"
       -> Feature "Anforderungsfilterung"
         -> Feature-Einstellungen bearbeiten
           -> Maximal zuslässig Inhaltslänge (Bytes)

       -> Feature "ASP"
         -> Verhalten
           -> Limiteigenschaften
             -> Limit für Entitätskörper in Anforderung

    Dann noch das hier:

      http://blog.thomasbandt.de/39/2359/de/blog/iis-7x-uploadlimits-konfigurieren.html

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 5. Mai 2011 17:43
    Moderator
  • Ich benutze PHP zum Coden.

    ASP und dergleichen ist nicht meine Welt!

     

    Die Einstellungen sind korrekt.

    Also auch hier 2147483648 eingestellt.

     

    Hier mal die Config:

     

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering allowDoubleEscaping="false">
            <requestLimits maxAllowedContentLength="2147483648" />
          </requestFiltering>
        </security>
      </system.webServer>
    </configuration>

    Wie ich schon schrieb: suche schon seit 2 Tagen!

    Donnerstag, 5. Mai 2011 18:04
  • Hi,

    da fehlt aber die zweite notwendige Einstellung (im Link auch beschrieben):

    <configuration>
        <system.web>
            <!-- Angabe in Kilobyte, nicht Byte -->
            <httpRuntime maxRequestLength="102400" />
        </system.web>
        ...

    Für PHP musst Du die Einstellungen dann auch noch in der php.ini ändern und anschließend den Application Pool neu starten.

      http://refactored.tumblr.com/post/4609761388/wordpress-iis7-uploads

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Donnerstag, 5. Mai 2011 18:27
    Moderator
  • Sorry mein Fehler!

    Hatte es aus einer alten Datei raus kopiert.

    Die richtige schaut so aus:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.web> 
        <httpRuntime maxRequestLength="2097152" />
      </system.web>
      <system.webServer>
        <security>
          <requestFiltering allowDoubleEscaping="false">
            <requestLimits maxAllowedContentLength="2147483648" />
          </requestFiltering>
        </security>
      </system.webServer>
    </configuration>

    An die PHP.ini hab ich auch gedacht.

    Dort sind auch alle Werte richtig eingestellt!

    Hat keinen Erfolg!

     

    Donnerstag, 5. Mai 2011 18:40
  • Ich habs endlich geschafft*ggg

    Nach 36 Stunden und ich glaube 20 Kannen Kaffee hab ich raus gefunden wie man es richtig macht.

    Als erstes sei gesagt das man absolut keine Änderungen von Hand an den Dateien vornehmen muss/sollte!

    Die einzige Ausnahme ist die PHP.ini

     

    Ich hab nun mal alles auf 2GB eingestellt!

    Das sind in Bytes 2147483648

    Das Timeout hab ich auf 3600 Sekunden eingestellt.

    Somit sollte auch eine langsame Leitung in der Lage sein große Dateien Uploaden zu können.

     

    Als erstes muss man die PHP.ini einstellen.

    Und zwar wie folgt:

    upload_max_filesize = 5000M
    post_max_size = 5000M
    max_execution_time = 3600
    max_input_time = 3600

     

    Wie man unschwer erkennen kann hab ich 500M eingestellt was 5GB sind.

    Das ist aber nicht wirklich schlimm da die Haupteinstellung im IIS gemacht wird.

    So hat man Spielraum!

     

    Ich hab nach der Einstellung den Server neu gestartet.

    Die PHP.ini findet man am besten mit einer PHP Datei in der Ihr folgendes schreibt:

    <?php
    phpinfo()
    ?>
    
    

    Ruft die Datei auf den Server auf und sie zeigt euch alle Einstellung.

    wo sie ligt (Loaded Configuration File).

     

    Nach dem Ihr die Werte dann dort auch wieder findet geht es los mit der eigentlichen Einstellung.

     

    Als erstes mal den Server Manager und dort in den IIS gehen.

    Klickt unter Sites eure Domain an die Ihr einstellen möchtet.

    Als erstes müsst Ihr den Time out einstellen.

    Klickt dazu ganz rechts unter Website verwalten auf Limits…

    Gebt dort unter Verbindugstimeout 3600 ein und klickt auf OK.

    Dann  im großen Fenster unter Verwaltung den Konfigurations-Editor doppelt klicken.

    Oben unter Abschnit sucht Ihr nun „system.webServer/security/requestFiltering“ raus.

    Wenn Ihr das habt seht ihr unteranderen „requestLimits“ mit ein Pluss.

    Klickt auf das Plus.

    Dort unter maxAllowedContentLength gebt Ihr 2147483648 ein.

    Klickt dann irgendwo anders ins Leere.

    Danach noch auf der linken Seite auf Übernehmen klicken und das war es dann auch schon.

     

    So das war es dann auch schon.

    Nun ist die Domain bis 2GB Upload bereit.

    Geht aber nicht für Subdomains.

    Dort müsst Ihr dann das gleich machen.

     

    Für die Rechtschreibfehler endschuldige ich mich mal.

    Hab seit 36Stunden nicht mehr geschlafen und es ist derzeit 1Uhr nachts.

     

    Ich hoffe das wird mal jemanden helfen!

     

    PS: das mit den KiloByte angabe ist nicht notwendig.

    Im gegenteil: das hat mein IIS 7.5 dazu gebracht das er nicht mal Varis per Post mehr übertragen hat und ich den Server komplet neu aufsetzen musste (2Mall)

     

    Dennoch möchte ich mich für die hilfe bedanken!

    Sie hat mich da hin gebracht!

     

    Lg

    JJ

    Freitag, 6. Mai 2011 23:07
  • Hi,

    vorab: Es freut mich, dass es jetzt klappt. Aber ...

    Als erstes muss man die PHP.ini einstellen.

    Ich hab nach der Einstellung den Server neu gestartet.

    ...

    Dann  im großen Fenster unter Verwaltung den Konfigurations-Editor doppelt klicken.

    Oben unter Abschnit sucht Ihr nun „system.webServer/security/requestFiltering“ raus.

    Wenn Ihr das habt seht ihr unteranderen „requestLimits“ mit ein Pluss.

    Klickt auf das Plus.

    Dort unter maxAllowedContentLength gebt Ihr 2147483648 ein.


    ... genau das hab ich dir in meiner ersten Antwort geschrieben.

    > Für PHP musst Du die Einstellungen dann auch noch in der php.ini ändern und anschließend den Application Pool neu starten.

    Letzteres hatte ich über die IIS Oberfläche selbst, nicht über den Config-Editor gezeigt.

    > <Server>
    >
    -> Bereich "IIS"
    >    -> Feature "Anforderungsfilterung"
    >      -> Feature-Einstellungen bearbeiten
    >        -> Maximal zuslässige Inhaltslänge (Bytes)

    Du hättest dir also einiges an Zeit (und Kaffee^^) sparen können :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Samstag, 7. Mai 2011 00:47
    Moderator
  • Eins hatte ich noch vergessen,

    Ich hab nun mal alles auf 2GB eingestellt!

    Das Timeout hab ich auf 3600 Sekunden eingestellt.

    Somit sollte auch eine langsame Leitung in der Lage sein große Dateien Uploaden zu können.

    das glaubst auch nur Du :) Ausgehend von 2 GB, schafft ein Client mit 5 MBit Upstream in einer Stunde in etwa diesen Durchsatz. Nur hat kein Mensch (bzw. die allermeisten Normalsterblichen, insbesondere hierzulande) nicht mehr als ca. 1 MBit Upstream.

    Ok, ggfs. ist VDSL 25 o.vgl. für dich schon eine "langsame Leitung". Dann könntest Du Recht haben, da würde das nämlich mit 5 MBit Upstream in etwa hinkommen. DSL User schaffen das aber nicht, ISDN User schon gar nicht.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 7. Mai 2011 00:53
    Moderator
  • Jep sagte ja das Es sehr geholfen hat ;)

    Das eigentliche Problem lag wahrscheinlich an der Bastelei.

    Aber wenn ich es von Hand mache mit der Config darf ich danach immer den Server neu aufsetzen ;)

     

    Ich gehe davon aus das das hier der eigentliche Auslöser war.

     

    <system.web>

        <httpRuntime maxRequestLength="2097152" />

      </system.web>

     

    Die Liste wie man es macht dient eigentlich auch nur zu Komplettierung dieses Trades!

    Und ja*ggg* VDSL ist sehr lahm.

    Ich hab ne Glasfaser Anbindung.

    Und die, die die Seite nutzen haben das auch*ggg

    Sollte ich wohl noch erwähnen das jeder das selber mal testen soll was man in Wirtlichkeit erreicht!

     

    Noch malz danke für deine Hilfe!

    Wollte auch nur etwas zurück geben ;)

     

    Lg

    JJ

    Samstag, 7. Mai 2011 06:44