Laden...

Upload simulieren

Erstellt von Blue_Dragon vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.049 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 14 Jahren
Upload simulieren

Hallo Leute,

Ich habe im Moment das Problem, das ich auf einer ASP.NET Seite einen Dateiupload einbauen will. Im Moment entwickle ich diese Anwendung lokal in meinem Dateisystem und starte die Seite mit dem Webserver der in Visual Studio integriert ist.

Wenn die Basisfunktionalität gegeben ist, würde ich das Projekt gerne auf einen IIS Server in der Firma migrieren.

Wie kann ich jetzt in meinem lokalen Dateisystem einen Fileupload simulieren?

Liebe Grüße
Dragon

E
171 Beiträge seit 2004
vor 14 Jahren

ich versteh nicht genau was du willst.

  • Du willst also dein WebProject Publishen auf den Firmen IIS
    aber was genau meinst du mit Upload simulieren?
    Das du ein Progess angezeigt bekommst ?

.elron

M
27 Beiträge seit 2010
vor 14 Jahren

Hi,

auf der Seite hier (Microsoft Support Page) kannst du folgenden Code für die Uploadprozedur entnehmen:

private void btnUpload_Click(object sender, System.EventArgs e)
		{

string strFileName; 
		string strFilePath;
		string strFolder; 
		strFolder = Server.MapPath("./") ;
		
		// Retrieve the name of the file that is posted.
		
		strFileName = oFile.PostedFile.FileName;
		strFileName = Path.GetFileName(strFileName);
			if(oFile.Value != "")
			{		
				// Create the folder if it does not exist.
				if(!Directory.Exists(strFolder))
				{
					Directory.CreateDirectory(strFolder);
				}
				
				// Save the uploaded file to the server.
				strFilePath = strFolder + strFileName;

				if(File.Exists(strFilePath))
				{
					lblUploadResult.Text = strFileName + " already exists on the server!";
				}
				else
				{
					oFile.PostedFile.SaveAs(strFilePath);
					lblUploadResult.Text = strFileName + " has been successfully uploaded.";
				}

			}	
			else
			{
						lblUploadResult.Text = "Click 'Browse' to select the file to upload.";
			}
		// Display the result of the upload.
		frmConfirmation.Visible = true;
}

Mit dieser Einstellung
strFolder = Server.MapPath("./") ;
werden die Daten in deinen Projektordner geladen.

Musst halt noch den Button, Label und den Namen des Feldes für die Dateiauswahl anpassen.

Gruß
mohnstrudel

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 14 Jahren

@mohnstudel: Danke, das ist eines der Sachen die ich bereits verzweifelt gesucht habe.

Jetzt stellt sich nur noch das Problem, dass ich jedesmal folgenden Fehler bekomme:

Ausnahmedetails: System.UnauthorizedAccessException: Der Zugriff auf den Pfad "C:\Users\Projekte\Upload" wurde verweigert.

Ich hab mir schon gedacht, dass ich aus einer ASP.NET Seite heraus nicht direkt auf mein Dateisystem zugreifen kann. Auf dem IIS sollte das dann doch so funktionieren.

Aber wie kann ich es jetzt noch erreichen, dass ich noch in mein Dateisystem schreiben kann, bis ich das ganze publishen kann?

Hier mein Code:

 protected void btnUpload_Click(object sender, EventArgs e)
    {
        string targetpath = Server.MapPath("./") + Session["user"];
        if(Directory.Exists(targetpath))
        {
            if (File.Exists(targetpath + "/" + fuUpload.PostedFile.FileName))
            {
                lblError.Text = "Diese Datei existiert bereits";
            }
            else
            {
                fuUpload.SaveAs(targetpath);
            }
        }
        else
        {
            Directory.CreateDirectory(targetpath);
            if (File.Exists(targetpath + "/" + fuUpload.PostedFile.FileName))
            {
                lblError.Text = "Diese Datei existiert bereits";
            }
            else
            {
                fuUpload.SaveAs(targetpath);
            }
        }
        fuUpload.SaveAs(targetpath);
    }
E
171 Beiträge seit 2004
vor 14 Jahren

ja ok hilft mir nicht weiter 😃

Sorry vieleicht hatte ich einfach zu wenig schlaf ^^

Ich versteh immer noch nicht was du machen willst bzw. was es für dich heisst ein
upload zu simulieren ?

Du willst eine seite auf dem IIS haben und ein Filehochladen aber nicht im WWW root die Datei abspeichern sonder woanders auf dem Server?

Wenn ja musst du nur die berechtigungen setzen dann geht das auch 😃

.elron

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 14 Jahren

Es ist ja nicht richtig simulieren.

Es geht nur darum ein auf dem Dateisystem laufendes Projekt dazu zu bringen, eine Datei über die SaveAs Funktion eines asp:FileUpload irgendwohin zu speichern =).

Ich denke das wäre kein Problem, wenn die Seite in einem IIS in einem virtuellen Verzeichnis liegt, aber da es auf mein lokales Dateisystem schreiben will, hat die "Website" keine schreibrechte.

Lg

E
171 Beiträge seit 2004
vor 14 Jahren

ja ok einfach die berechtigung setzen ..

.elron

M
27 Beiträge seit 2010
vor 14 Jahren

@elron

Ich würde sagen Blue_Dragon möchte folgendes machen:

Lokale Maschine - Ordner A
Loklae Maschine - Ordner B
Server - Ordner C

Eine Datei befindet sich im Ordner A.
Nun soll sie anstatt von A -> C (hochgeladen), von A -> B hochgeladen (oder eher verschoben) werden.

@Blue_Dragon
Also Zugriff auf dein eigenes System sollte schon möglich sein, bei mir hat's geklappt. Auf die Schnelle fallen mir nur 2 Sachen ein:

  • "C:\Users\Projekte\Upload" -> Doppelslash nach Users?
  • Session["user"] -> steht da vielleicht irgendwas blödes drin?
E
171 Beiträge seit 2004
vor 14 Jahren

hehe ok, ja klar geht das warum sollte das nicht gehen
vorrausgesetzt auf dem Server läuft ein IIS..

ich würde es so mache das du eine Zentralen Receiver hast,
der die daten per POST entgegen nimmt und per QueryString sagst dann noch wo das ganze hin soll am besten schreibst du dir noch ein log File..

.elron

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 14 Jahren

@mohnstrudel:

Das Doppelslash hab ich jetzt zwar behoben, aber es funktioniert leider immer noch nicht 😕. Und in der Session steht der username des eingeloggen Benutzers drin. Für den wird ein Ordner angelegt wenn er noch nicht existiert, bzw. sollen seine Daten drin abgelegt werden, falls er bereits existiert.

Das Problem der Zugriffsberechtigung ist leider immer noch da. Ich versuch gerade herumzutüfteln, warum er mich nicht schreiben lässt.

H
81 Beiträge seit 2008
vor 14 Jahren

Hast du schon mal versucht einen anderen Ordner als Ziel zu verwenden?

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 14 Jahren

Ja das hab ich

Funktioniert leider auch nicht

691 Beiträge seit 2007
vor 14 Jahren

Wenn ich im Rootfolder einen Ordner anlege, der z.b. "upload" heißt, kann ich dort problemlos Dateien hochladen. Auf dem Zielrechner kannst du ja dann einen virtuellen Ordner namens "upload" verstellen, der woanders hinzeigt.

Alternativ kannst du für deine lokalen Testzwecke doch einfach einen Pfad im Projektordner nehmen? (Bei jedem Startup löscht du dann halt den Inhalt, falls gewünschnt)

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de