2008-09-09 10 views
18

Ich habe einen WCF-Dienst erstellt, um eine Datei zu akzeptieren und auf die Festplatte zu schreiben. Das Frontend besteht aus einer Seite mit SWFUpload, die den Upload auf der Clientseite übernimmt. Offensichtlich postet SWFUpload die Daten mit einem Inhaltstyp von: multipart/form-data.Wie lade ich eine Datei zu einem WCF-Dienst hoch?

Ich würde das in Ordnung, aber auf der Service-Seite bekomme ich einen Fehler. Der Fehler ist "ProtocolException" erwartet Text/XML. Ich habe verschiedene Nachrichtencodierungen in den Bindungen ausprobiert, aber nichts scheint zu funktionieren.

Wie kann ich diese Datei mit multipart/form-data hochladen?

Antwort

9

@jdiaz,

@JasonS ist richtig, Datei müssen Sie laden es als Byte-Stream übertragen. Sie müssen WCF streaming verwenden. Zum Beispiel, wie Datei über WCF hochladen, siehe an article von http://kjellsj.blogspot.com

+1

Hat das wirklich geholfen? Ich habe immer noch keine Ahnung, wie man vom Browser hochlädt. Alle Lösungen, die ich bisher gefunden habe, verwenden den .NET Client zum Hochladen auf WCF. Nicht SWFUpload. – tishma

0

Ich glaube, dass Sie die Datei als Byte-Array zu WCF übertragen müssen. Sie müssen den Post von SWFUpload verarbeiten und vor dem Senden an Ihren Dienst in ein Byte-Array konvertieren.

2

Was Sie verwenden möchten, ist wahrscheinlich MTOM, wenn Sie wollen, dass es Standard ist. Mit diesem können Sie MIME-Multiparts Nachrichten haben.

Sie müssen dann die Datei als Stream lesen und es in einen der Parameter der Anfrage stopfen.

1

Möglicherweise zielt Ihr WCF-Dienst auf .NET Framework 3.5 und Ihr IIS läuft auf .NET Framework 4.0. In diesem Fall (Framework Mismatch) müssen Sie Ihren Service ändern.

Verwandte Themen