Fragensteller
den Inhalt von einer Datei zurückzugeben???

Frage
-
Hallo,
ich habe ein Silverlight-Projekt, dass über Webservices (asp.net) den Inhalt von einer Datei als eine Liste zurückbekommt.
[OperationContract] public ArrayList imprtieren(string path) { ArrayList ausgabe = new ArrayList(); StreamReader sr = new StreamReader(path, System.Text.Encoding.Default); string s = ""; while ((s = sr.ReadLine()) != null) { string[] temp = s.Split(';'); s = ""; for (int i = 0; i < temp.Length; i++) { temp[i] = temp[i].Trim(); if (temp[i] != "") ausgabe.Add(temp[i]); } } sr.Close(); sr.Dispose(); return ausgabe; }
Und das funktioniert lokal auch wunderbar aber wenn ich mein Projekt auf dem Server habe, funktioniert es nicht mehr, da die Datei nicht auf dem Server vorhanden ist.
Gibt es eine Möglichkeit ohne dass man die Datei auf dem Server hochladen muss, den Inhalt der lokale Datei als eine Liste zurückzugeben?
Gruesse, NUNUI
- Bearbeitet Nunui Freitag, 5. September 2014 18:57
Alle Antworten
-
Hallo,
wie willst du denn die Datei bekommen, wenn du sie nicht auf den Server hoch lädst? Der Client kann sie nicht haben, wenn der Benutzer diese nicht expliziet herunter lädt und die den Pfad verrät.Du musst also entweder die Datei in die Resourcen der SL App packen oder die Datei jedes mal expliziet vom Server downloaden.
Erkläre also bitte nochmal was du genau vor hast. Wenn du dann noch Probleme hast, können wir dir besser weiter helfen.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Wenn du eine Datei in die Resourcen packst, ist die Datei 1 zu 1 in der Anwendungsdatei enthalten. Siehe auch Include Files as Resources in Silverlight 2.0 und Read a text file as a resource.
So kannst du es machen, wenn der Inhalt der Datei nie geändert wird.
Einfach eine Datei auf den Server hochladen zu lassen kann eine extreme Sicherheitslücke sein. Schließlich kann sich in der Datei auch Quellcode enthalten sein. Wenn sich der Inhalt der Datei ständig ändert, solltest du eher auf eine Datenbank setzen. Diese sind schließlich für so etwas da.
Auch kann die Anwendung so von mehreren Benutzern verwendet werden. Sonst könnte wohl jeder Benutzer die Datei überschreiben.Das einmalige Hochladen geht über einen FTP Client, ... oder andere Tools. Das kommt auf deinen Server an.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Dann habe ich vielleicht etwas falsch verstanden!!!
Bei der Datei handelt es sich um eine CSV-Datei (Personalinformationen), dass vom bestimmte Benutzer zur Verfügung gestellt und dann dessen Inhalt in einer Liste gepackt wird und dann anschliessend in die Datenbank eingetragen werden muss. Das ist genau mein Vorhaben!
Gruesse, NUNUI
-
Eine Datei kannst du einfach mit einem OpenFileDialog vom Benutzer auswählen lassen. Dann kannst du die Datei mit deinem obigen Code auslesen.
Über einen Webservice kannst du dann die Daten in die DB schreiben.
Siehe auch: Beginners guide to accessing SQL Server through C#Mehr ist eigentlich nicht dabei.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
SUPER, Danke für den Hinweis!
Ich habe aber noch ein Problem, nämlich wenn ich in Silverlight über OpenFileDialog die Datei lese, bekomme Probleme mit Sonderzeichen, da leider in Silverlight Encoding.Default nicht erlaubt ist!
Gruesse, NUNUI
-
Hallo,
ja natürlich: Ein Byte Array.
Da oben ein OperationContract steht: Auf der Serverseite gibt es die Einschränkung nicht und Du kannst die binären Daten via MemoryStream dem StreamReader übergeben und ein beliebiges Encoding verwenden.
Zu beachten wären die max. Array Größen von WCF, siehe u. a. WCF Byte Array issue
Encoding.Default gibt es unter Silverlight aus gutem Grund nicht. Denn das kann sehr unterschiedlich sein, je nachdem ob der Anwender im Westen, Osten im Norden oder Süden der Erde wohnt. (Und bitte nicht argumentieren, dass es in deinem Fall der Rechner hinter der nächste Tür steht).
Gruß Elmar