2011-10-18 11 views
7

Crearé un archivo WCF para cargar archivos como imágenes o archivos pdf al servidor. ¿Cómo puedo crear un servicio que pueda manejar esta función? Traté de buscar en Google al respecto, pero la mayor parte del artículo me dijo que use Stream como parámetro de servicio. Pero lo que quiero es usar byte [] (matriz) para el contenido del archivo. porque, este servicio no solo está accediendo usando .nte framework, sino que también usa otras tecnologías, como php, java, object-c, etc.cargue el archivo wcf

¿alguna ayuda?

+0

Una matriz de bytes no es un archivo. Debe editar el tema de esta pregunta para reflejar el deseo de publicar una matriz de bytes. Es engañoso. – barrypicker

Respuesta

4

crear un método de servicio WCF aceptar byte[] como parámetro:

[OperationContract] 
public void ReceiveByteArray(byte[] byteArray) { ... } 
+0

esto no funciona con archivos de gran tamaño. El uso de [Streaming message transfer] (http://msdn.microsoft.com/library/ms731913.aspx) es mejor. Usar una matriz de bytes como se solicita es probablemente una mala idea. Tal vez usar un manejador de http aparte el servicio WCF puede ser una buena idea –

+0

yozora quiere usarlo en varias plataformas, la solución no es ideal, pero puede ayudar en el 90% de los casos, para descansar podría ser necesario un cargador inteligente. –

0

Cree un método de servicio WCF que acepte File Stream.

1) usando un control de carga de archivos puede realizar la tarea 2) crear una carpeta Temp en el sitio del cliente.

aquí el código ...

cadena FileExtension = null, Nombre de archivo = null;

 try 
     { 
       if (FileUpload1.HasFile) 
       { 

        ITransferFile clientUpload = new TransferFileClient(); 
        RemoteFileInfo uploadRequestInfo = new RemoteFileInfo(); 
        fileextension = Path.GetExtension(FileUpload1.PostedFile.FileName); 

        FileUpload1.PostedFile.SaveAs(Server.MapPath(Path.Combine("~/TempFolder/", FileName + fileextension))); 
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(Server.MapPath("~/TempFolder/") + FileName + fileextension); 

        using (System.IO.FileStream stream = new System.IO.FileStream(fileInfo.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read)) 
        { 
         uploadRequestInfo.FileName = FileUpload1.PostedFile.FileName; 
         uploadRequestInfo.Length = fileInfo.Length; 
         uploadRequestInfo.FileByteStream = stream; 
         clientUpload.UploadFile(uploadRequestInfo); 
        } 

       } 


     } 
     catch (Exception ex) 
     { 
      System.Web.HttpContext.Current.Response.Write("Error : " + ex.Message); 
     } 
     finally 
     { 
      if (File.Exists(Server.MapPath("~/TempFolder/") + FileName + fileextension)) 
      { 
       File.Delete(Server.MapPath("~/TempFolder/") + FileName + fileextension); 
      } 
     } 
Cuestiones relacionadas