Owly Geschrieben 29. August 2013 Teilen Geschrieben 29. August 2013 Hallo, Ich habe hier eine ASP.NET-Anwendung (C#) mit einem File-Input-Dialog (oder File-Upload). Dabei wird aber gar nicht die Datei hochgeladen, sondern nur der Dateipfad wird bei einem Buttonklick in einer Datenbank gespeichert. Bisher hat das auch wunderbar funktioniert. Jetzt ist aber ein Fall aufgetreten, bei dem es nicht geht, und zwar bei größeren Dateien (offenbar größer als 4GB), wenn man IE10 benutzt. Dann tritt folgender Fehler auf: "Arithmetic result exceeded 32 bits." Ist damit wohl die Dateigröße gemeint (etwa 4,10GB, die genaue Zahl hat in binär umgewandelt 33 bit)? Ich habe bereits versucht, in der web.config unter httpRuntime die maximale Größe zu erweitern (maxRequestLength und executionTimeout vergrößert), aber das hat nichts gebracht. Kann mir jemand einen Tipp geben, wie ich dieses Problem lösen kann? Vielleicht kennt ihr auch eine Alternative zum File-Upload, da ich ja wie gesagt nur den Pfad brauche und nicht die ganze Datei. Viele Grüße Owly Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 30. August 2013 Teilen Geschrieben 30. August 2013 Wie schaut es denn mit den dafür zuständigen Code aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Owly Geschrieben 30. August 2013 Autor Teilen Geschrieben 30. August 2013 (bearbeitet) Ok, ich habe es mal auf den relevanten Code reduziert: <body> <form id="form1" runat="server"> <div> <asp:DetailsView ID="DtlsVw_Insert" runat="server" AutoGenerateRows="False" DataKeyNames="Index_Nr" DefaultMode="Insert" HeaderText="Add Image" Height="50px" OnItemInserting="detailsViewInserting" Width="407px"> <Fields> <asp:TemplateField HeaderText="img path" SortExpression="img_path"> <InsertItemTemplate> <input name="filePath" type="file" id="File1"/> </InsertItemTemplate> </asp:TemplateField> <asp:TemplateField ShowHeader="False"> <InsertItemTemplate> <asp:LinkButton ID="LnkBtn_Ok_insert" runat="server" CausesValidation="True" CommandName="Insert" Text="Ok"></asp:LinkButton> </InsertItemTemplate> </asp:TemplateField> </Fields> </asp:DetailsView> </div> </form> </body> namespace WebApplication { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void detailsViewInserting(object sender, DetailsViewInsertEventArgs e) { // get img_Path Session["imgPath"] = Request.Form["filePath"]; } } } Mit "Image" sind hier übrigens keine Bilder gemeint, sondern Images von Datenträgern, die später automatisiert aufgespielt werden sollen. Darum sind auch die Dateien so groß. Bearbeitet 30. August 2013 von Owly Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 30. August 2013 Teilen Geschrieben 30. August 2013 Hmmmm, hier sehe ich kein File-Down/Upload. Allerdings: Was hindert Dich daran, nur den Feldinhalt nach der Selektion zu lesen und diese dann irgendwo zu speichern? Ich vermute mal dass der Down/Upload per Button angestoßen wird, oder wie machst Du das? Wenn dem so sein sollte, dürfte es kein Problem sein, anstatt dem Down/Upload etwas anderes ausführen zu lassen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Owly Geschrieben 30. August 2013 Autor Teilen Geschrieben 30. August 2013 (bearbeitet) Entschuldige, ich hatte etwas vergessen. Ich habe den Code jetzt ergänzt. Natürlich wird der "Upload" per Button angestoßen. Aber statt des Uploads greife ich ja tatsächlich nur den Pfad ab. Und trotzdem funktioniert es nicht, wenn die Datei zu groß ist. Bearbeitet 30. August 2013 von Owly Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 30. August 2013 Teilen Geschrieben 30. August 2013 Also noch einmal Die Methode die beim Klicken auf den Button Upload aufgerufen wird muss dann so modifiziert werden, dass A. der Upload nicht gemacht wird, B. die Aktion ausgeführt wird, wie von Dir gewünscht ist. Fertig P.S. Ich habe zwar keinerlei Erfahrung mit ASP, aber ich stütze mich auf Logik. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Owly Geschrieben 30. August 2013 Autor Teilen Geschrieben 30. August 2013 Aber genau so mache ich es doch! Darum habe ich das Wort "Upload" extra noch in Anführungszeichen gesetzt, vielleicht hast du das nicht mehr gesehen. Beim Klick auf "Ok" wird nur diese Zeile ausgeführt: Session["imgPath"] = Request.Form["filePath"]; Die Datei wird nicht hochgeladen. Anschließend werden natürlich noch alle Daten in der Datenbank gespeichert, aber der Fehler tritt bereits hier auf. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 30. August 2013 Teilen Geschrieben 30. August 2013 Wolltest Du denn nicht NUR den Dateinamen und nicht auch noch den Upload? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Owly Geschrieben 30. August 2013 Autor Teilen Geschrieben 30. August 2013 Ich brauche den Dateipfad. Den Upload brauche ich nicht, das ist richtig. Es wäre wohl nicht sinnvoll, mehrere Gigabyte große Dateien in einer Datenbank zu speichern, die eh auf dem Server liegen. Der Pfad reicht völlig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 30. August 2013 Teilen Geschrieben 30. August 2013 Der Browser liefert dem Webserver doch absolut keine Informationen über den lokalen Dateipfad. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Owly Geschrieben 30. August 2013 Autor Teilen Geschrieben 30. August 2013 (bearbeitet) Doch, wenn man es ihm erlaubt. Ich weiß, dass es zumindest im Internet Explorer 10 geht. Die Option in den Internet Options heißt "Include local directory path when uploading files to a server". Bis Version 8 ging es wohl auch noch ohne. Das Problem hatte ich nämlich auch schon, dass sich jemand meldete, warum auf einmal nur noch der Dateiname gespeichert wird und nicht der Pfad. Es geht hier auch nicht um lokale Dateien, sondern um solche die auf dem Server liegen. Da gibt es keine Bedenken. Bearbeitet 30. August 2013 von Owly Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.