2011-12-30 37 views
7

HTML5およびJavaScript/jQueryのみを使用してWCFサービスにファイルをアップロードしようとしています。 WCFサービスは、IISではなくWindowsサービスからホストされているため、PHPやaspxアップロードハンドラを使用することはできません。ファイルはバイナリであり、テキストではありません。HTML5および/またはjQueryを使用してWCFサービスにファイルをアップロード

理想的には、ファイルをローカル(サーバー側)に書き込むことができる.netストリームオブジェクトが理想的です。この時点で、私はちょうど非常に非常に基本的なファイルのアップロードを探しています。

私は現在JSON通信を行うことができますが、バイナリファイルへの飛躍はできません。現在、私はこれまでのところとこだわっている:

サービス・インターフェース:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "SendFile")] 
string SendFile(Stream stream); 

サービスの実装:

public string SendFile(Stream stream) 
     { 
      // this works for strings, but i want a FileStream 
      StreamReader reader = new StreamReader(stream); 
      string data = reader.ReadToEnd(); 

      return data; 
     } 

HTML:

<input type="file" id="fileInput" onchange='sendFile();' /> 

のJavaScript/jQueryの:クロームコンソールで

function sendFile() { 
     submitButton.disabled = true; ; 
     setInnerText("sending file..."); 
     var file = document.getElementById('fileInput').files[0]; 
     var url = "http://10.0.1.9:8732/RainService/SendFile"; 
     $.ajax({ 
      url: url, 

      type: "POST", 
      data: file, 
     }); 
    } 

私は "違法呼び出し" エラーが発生します。私はdata: file.nameを使うことができましたが、それはうまくいくでしょう。私はサーバー側で再構築できるように、ファイルの内容のストリームを送信する必要があります。

アイデア?

答えて

0

あなたはajaxでファイルを送信することはできません。 SWFオブジェクトを統合したプラグインを使用する必要があります。このプラグインでは、ファイルの種類をアップロードすることができます(何を定義するか)。

私は、あなたがMVC3で自分のプロジェクトに使用したuploadifyを使用することをお勧めします。

またはあなたが使用することができます。 http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx

または

http://www.codeproject.com/KB/WCF/UploadlargeFilesWCFHTTP.aspxもちろん、より多くのドキュメント

のために、Googleはmore

助けることができます
関連する問題