2011-12-30 7 views
7

Estoy intentando subir un archivo a mi servicio WCF usando solo HTML5 y JavaScript/jQuery. El servicio WCF está alojado en un servicio de Windows en lugar de IIS, por lo que no creo que pueda usar los controladores de carga php o aspx. Los archivos son binarios y no de texto.Carga de un archivo al servicio WCF utilizando HTML5 y/o jQuery

Idealmente, me gustaría terminar con un objeto de transmisión .net donde puedo escribir el archivo localmente (en el lado del servidor). En este punto, estoy buscando una carga de archivos muy muy básica.

Puedo hacer comunicación JSON actualmente, pero no puedo dar el salto a archivos binarios. Actualmente estoy hasta aquí y pegado: Interfaz

Servicio: Implementación

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

Servicio:

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, 
     }); 
    } 

En la consola de Chrome me sale un error "invocación ilegal". Podría usar data: file.name y eso funcionaría bien sin embargo. Necesito enviar una secuencia del contenido del archivo para que pueda reconstruirlo en el servidor.

¿Alguna idea?

Respuesta

Cuestiones relacionadas