上传文件wcf [重复]
Posted
技术标签:
【中文标题】上传文件wcf [重复]【英文标题】:upload file wcf [duplicate] 【发布时间】:2011-12-09 21:46:40 【问题描述】:我将创建一个 WCF,用于将图像或 pdf 文件等文件上传到服务器。 如何创建可以处理此功能的服务? 我试图用谷歌搜索它,但大多数文章都告诉我使用 Stream 作为服务参数。但我想要的是使用 byte[] (array) 作为文件内容。因为,这个服务不仅仅是使用.nte框架访问,还使用了其他技术,如php、java、objective-c等。
有什么帮助吗?
【问题讨论】:
字节数组不是文件。应该编辑这个问题的主题以反映发布字节数组的愿望。它具有误导性。 【参考方案1】:似乎流媒体是您唯一的选择。看这个 [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 等)进行 POST
【讨论】:
【参考方案2】:创建一个接受byte[]
作为参数的WCF服务方法:
[OperationContract]
public void ReceiveByteArray(byte[] byteArray) ...
【讨论】:
这不适用于大文件。使用Streaming message transfer 更好。按要求使用字节数组可能是个坏主意。也许在 WCF 服务旁边使用 http put 处理程序可能是个好主意 yozora 想在各种平台上使用它,解决方案并不理想,但可以在 90% 的情况下提供帮助,其余可能需要智能上传器...【参考方案3】:创建一个接受文件流的 WCF 服务方法。
-
使用文件上传控件可以执行任务
在客户端站点上创建一个 Temp 文件夹。
这里是代码...
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);
【讨论】:
以上是关于上传文件wcf [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 HTML5 和/或 jQuery 将文件上传到 WCF 服务
wcf rest 服务用于安卓和ISO调用2-------文件上传
Android将文件作为ByteArray上传到WCF REST服务