2011-12-30 65 views
7

我想僅使用HTML5和JavaScript/jQuery將文件上傳到我的WCF服務。 WCF服務是由Windows服務而不是IIS託管的,所以我不認爲我可以使用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, 
     }); 
    } 

在Chrome控制檯我得到一個 「非法調用」 錯誤。我可以使用data: file.name,然而這可以正常工作。我需要發送文件內容的流,以便我可以在服務器端重建它。

任何想法?

回答