ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
968
968
EMPFEHLEN
-
01.06.10 11:54 #1
Hallo erstmal,
also ich bin seit längerem damit beschäftigt einen Fileuploader mit Progressbar zu programmieren.
Vor kurzem hab ich es dann endlich hinbekommen, doch sofort krieg ich ein neues Problem.
Wenn ich nach dem Event
ProgressBar1.RunTask
versuche einen Response.Redirect auf eine andere Seite auszuführen, bekomme ich gesagt das der Http-Header bereits abgeschickt wurde.
Daraufhin habe ich nach einer anderen Methode für die Weiterleitung gesucht und bin auf Server.Transfer
gestoßen, doch augenscheinlich reagiert er garnicht auf den Transfer...
Danach dachte ich mir es wäre vllt. einfacher, wenn ich die Weiterleitung über die Page_Load - Funktion und ein Postback mache.... Pustekuchen
1. Ich benötige eine Variable die in der ProgressBar1_RunTask - Methode generiert wird
2. Am Ende der ProgressBar1_RunTask - Methode wird garkein Postback ausgeführ und ich konnte keinen Hinweis darauf finden, wie ich serverseitig ein Postback einleite
Hier meine Lösungsansätze:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
protected void Page_Load(object sender, EventArgs e) { ProgressBar1.StartTaskButton = Button1.ID; ProgressBar1.RunTask += new EO.Web.ProgressTaskEventHandler(ProgressBar1_RunTask); if (!IsPostBack) { DropDownList1.SelectedIndex = 4; } } /// <summary> /// Zufällige Zeichenkette bestehend aus Buchstaben und Zahlen /// </summary> /// <param name="Length"></param> /// <returns></returns> static public string RandomString(Int64 Length) { System.Random rnd = new System.Random(); StringBuilder Temp = new StringBuilder(); for (Int64 i = 0; i < Length; i++) { if (rnd.Next(0, 2) == 1) //Generiert einen Zufälligen Buchstaben Temp.Append(Convert.ToChar(((byte)rnd.Next(26) + 65)).ToString()); else //Generiert eine Zufällige Zahl Temp.Append(rnd.Next(0, 9).ToString()); } return Temp.ToString(); } /// <summary> /// Button1 Klick Event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ProgressBar1_RunTask(object sender, EO.Web.ProgressTaskEventArgs e) { if (FileUpload1.FileName != null) if (FileUpload1.FileName != "") { string s = ""; string fileN = FileUpload1.FileName; string realName = fileN; do s = RandomString(25); while (new System.IO.FileInfo(VS_FileUploader.Properties.Resources.path).Exists); if (TextBox1.Text == "") { string re = fileN; int i = 1; do if (new System.IO.FileInfo(VS_FileUploader.Properties.Resources.path + fileN).Exists | (fileN.Length) == 25) { fileN = re; fileN = fileN + RandomString(i); i++; } while (new System.IO.FileInfo(VS_FileUploader.Properties.Resources.path + fileN).Exists | (fileN.Length) == 25); } else { realName = TextBox1.Text; string re = fileN; int i = 1; do if (new System.IO.FileInfo(VS_FileUploader.Properties.Resources.path + fileN).Exists | (fileN.Length) == 25) { fileN = re; fileN = fileN + RandomString(i); i++; } while (new System.IO.FileInfo(VS_FileUploader.Properties.Resources.path + fileN).Exists | (fileN.Length) == 25); } bool einerSchritte = false; FileStream fss = new FileStream(Path.Combine(VS_FileUploader.Properties.Resources.path, FileUpload1.FileName), FileMode.Create, FileAccess.Write); BinaryWriter w = new BinaryWriter(fss); if (FileUpload1.PostedFile.ContentLength <= 100) { einerSchritte = true; ProgressBar1.Maximum = FileUpload1.PostedFile.ContentLength; } foreach (byte b in FileUpload1.FileBytes) { w.Write(b); if (einerSchritte) e.UpdateProgress(ProgressBar1.Value++); else if (Convert.ToDouble(fss.Length) % Convert.ToDouble(FileUpload1.PostedFile.ContentLength / 100) == Convert.ToDouble(0)) e.UpdateProgress(ProgressBar1.Value++); //EO.Web.ProgressTaskEventArgs f = ProgressBar1. } w.Flush(); w.Close(); fss.Dispose(); fss.Close(); System.IO.FileStream fs = new System.IO.FileStream(VS_FileUploader.Properties.Resources.path + s, System.IO.FileMode.Create, System.IO.FileAccess.Write); System.IO.StreamWriter ww = new System.IO.StreamWriter(fs); ww.WriteLine(VS_FileUploader.Properties.Resources.path + fileN); ww.WriteLine(realName); ww.WriteLine(DropDownList1.SelectedIndex + 1); ww.Dispose(); ww.Close(); fs.Dispose(); fs.Close(); [B] Server.Transfer("~/wait.aspx?" + s + "="); [/B] } }
Das Event ProgressBar1_RunTask wird beim Klick auf den Button1 ausgeführt.
Dann wird, wenn das FileUpload1 - Feld eine Datei enthält, eine Datei mit einem Kryptischen Namen erstellt über die später der Download geregelt wird.
Dann wird die Datei byte-weise ausgelesen und bei jedem File.Length / 100 tem Byte wird die ProgressBar.value um 1 erhöht.
Danach sollte er eig. den Redirect ausführen... macht er aber nicht.
Bin echt ratlos so langsam,
hoffe euch fällt was hierzu ein.
Liebe Grüße,
FirenGeändert von firendeath (02.06.10 um 09:02 Uhr) Grund: Rechtschreibfehler ...
-
Hi
bist im falschen Forum hier. Es gibt auch einen NET Bereich hier bei Tutorials, da sitzen die Profies.
Einfach einen Moderator anschreiben, der verschiebt Diich in die Schublade.
Mich wundert auch so manches und ich weiß aus ASP.NET Anfänger-Erfahrung, dass man sich oft den Wolf nach Lösungen sucht.
Hast Du mal überlegt, den Upload-Prozessbar-Prozess in eine Funktion(boolean) auszulagern mit Return true als Ergebnis, wenn alles stimmt.
Dieses Ergebnis im Buttonevent mit einer Abfrage generieren.liebe Grüße, die Luzie
-
10.06.10 14:24 #3
- Registriert seit
- Aug 2006
- Beiträge
- 203
Warum erstellst du dir nicht ein UploadCompletedEvent, dass du wirst, wenn der Upload erledigt ist. Anschließend kannst du darin doch dein Server.Transfer aufrufen.
-
06.07.10 13:08 #4
Weil ich nicht weiß wie das geht...
Gibt es nicht eine simple Lösung wie ich aus einer Funktion, also NACHDEM der http-header gesendet wurde, eine Weiterleitung ausführen kann ?
-
06.07.10 21:33 #5
- Registriert seit
- Aug 2006
- Beiträge
- 203
Sei jetzt nicht böse aber Google mit c# events zu befragen kostet nicht die Welt. Und um deine Frage noch zu beantworten - nein außer diesen beiden gibt es vom Framework her nichts fertiges.
Ähnliche Themen
-
Komm nicht an den Content ran: Server returned HTTP response code XXX
Von StehtimSchilf im Forum Java GrundlagenAntworten: 1Letzter Beitrag: 21.04.09, 03:03 -
IIS Server und Companyweb funktionieren nicht mehr!
Von DerHeld im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 20.07.06, 13:48 -
lokale Dateien mit Response.Redirect in Mozilla öffnen
Von derAlex im Forum .NET ArchivAntworten: 2Letzter Beitrag: 23.09.04, 18:39 -
Problem : response.redirect und page.ispostback
Von Birk im Forum .NET ArchivAntworten: 2Letzter Beitrag: 01.07.04, 15:46 -
php links funktionieren auf eigenem server nicht?
Von ghhe im Forum PHPAntworten: 8Letzter Beitrag: 27.09.02, 15:15





Zitieren
Login




