Hallo,
ich möchte über Webservices in einem Silverlight-Projekt Dateien über OpenFileDialog per FTP hochladen und es klappt auch wunder bar, wenn ich es lokal ausführe aber wenn ich das Projekt auf dem Server veröffentliche bekomme leider dann die Fehlermeldung:
Ein Teil des Pfades “C:\Users\…“ konnte nicht gefunden werden.
private void button1_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "csv files (*.csv)|*.csv";
if (dialog.ShowDialog() == true)
{
DataServiceClient upload = new DataServiceClient();
upload.dateiUploadCompleted += (sender2, e2) =>
{
MessageBox.Show(e2.Result);
};
upload.dateiUploadAsync(dialog.File.FullName, dialog.File.Name);
txt_Adresse.Text = dialog.File.FullName;
btn_Sch1.IsEnabled = true;
}
}
[OperationContract]
public string dateiUpload(string pfad, string dateiName)
{
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + “…/upload/" + dateiName);
request.KeepAlive = false;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
StreamReader sourceStream = new StreamReader(pfad);
byte[] dateiInhalt = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = dateiInhalt.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(dateiInhalt, 0, dateiInhalt.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
return "OK";
}
catch (Exception exc)
{
return exc.Message;
}
}
Hat jemand vielleicht eine Idee, wie ich das Problem lösen kann?
Grüße,
G.M.
So funktioniert ein Upload auch nicht.
Was Du machst ist dem Service mitteilen, wo sich die Datei auf dem Client befindet (pfad Parameter).
Der Server kennt den Pfad doch gar nicht bzw. würde er den Pfad auf seinem System suchen...
Du musst dem Server schon die ganze Datei geben, und nicht nur ein Pfad - ist doch logisch 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
oops, da hast Du vollkommen recht!
Und wie kann ich dem Server die ganze Datei geben?
Das ist auch genau das was ich machen will, die gewählte Datei auf dem Server hochladen!
Grüße,
G.M.
google: c# Silverlight Datei Upload
Sollte man mal gelesen haben:
Verwendest Du Silverlight mit einem Webservice? Google-Suche nach c# silverlight upload file
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Grundsätzlich gibt es hierzu schon fertige Komponenten. Zu meinen Silverlight-Zeiten habe ich den Upload gelöst, indem ich den Dateiinhalt auf dem Client in ein Byte-Array konvertiert habe, diesen stückweise an einen Webservice gesendet habe und dieser hat den Stream anschließend wieder als Datei auf dem Server abgelegt. Also keine große Kunst.
Hier findest du das ganze exemplarisch.
@D-eath
SUPER, das funktioniert wunderbar, VIELEN DANK!
Ich habe wirklich alle mögliche Suchfragen eingegeben und leider hat nichts bei mir funktioniert aber wie gesagt das Beispiel auf der Seite funktioniert wunderbar 👍
Grüße,
G.M.