上传文件wcf

时间:2011-10-18 08:35:41

标签: c# .net wcf upload

我将创建一个WCF,用于将图像或pdf文件等文件上传到te服务器。 如何创建可以处理此功能的服务? 我试图谷歌搜索它,但大多数文章告诉我使用Stream作为服务参数。但我想要的是使用byte [](数组)作为文件内容。因为,这项服务不仅可以使用.nte框架访问,还可以使用其他技术,如php,java,objective-c等。

有什么帮助?

3 个答案:

答案 0 :(得分:5)

似乎流媒体是您唯一的选择。见 [MSDN example]

看到这个问题: How to upload a file to a WCF Service?

你可以查看这篇文章: http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx

它谈到只是设置WCF服务来接收任意数据,你可以从任何客户端(php,java等)发布

答案 1 :(得分:4)

创建一个接受byte[]作为参数的WCF服务方法:

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

答案 2 :(得分:0)

创建接受文件流的WCF服务方法。

  1. 使用fileupload控件可以执行任务
  2. 在客户端站点上创建Temp文件夹。
  3. 这里代码......

    string fileextension = null, FileName = 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);
        }
    }