使用 HTML5 和/或 jQuery 将文件上传到 WCF 服务
Posted
技术标签:
【中文标题】使用 HTML5 和/或 jQuery 将文件上传到 WCF 服务【英文标题】:Uploading a file to WCF service using HTML5 and/or jQuery 【发布时间】:2012-01-30 19:46:48 【问题描述】:我正在尝试仅使用 html5 和 javascript/jQuery 将文件上传到我的 WCF 服务。 WCF 服务是从 Windows 服务而不是 IIS 自托管的,所以我认为我不能使用 php 或 aspx 上传处理程序。这些文件是二进制文件而不是文本文件。
理想情况下,我想最终得到一个 .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
,但这会很好。我需要发送文件内容流,以便在服务器端重建它。
有什么想法吗?
【问题讨论】:
【参考方案1】:您不能通过 ajax 发送文件。 您必须使用集成了 SWF 对象的插件,您可以在其中上传某些文件类型(您定义什么)。
所以,我可以建议你使用 uploadify(我在 MVC3 的项目中使用了它)。
或者你可以使用: http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx
或
http://www.codeproject.com/KB/WCF/UploadlargeFilesWCFHTTP.aspx 获取更多文档
当然,google 可以帮你more
【讨论】:
以上是关于使用 HTML5 和/或 jQuery 将文件上传到 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章