我正在尝试仅使用HTML5和JavaScript/jQuery将文件上传到我的WCF服务.WCF服务是从Windows服务而不是IIS自托管的,所以我认为我不能使用php或aspx上传处理程序.文件是二进制文件而不是文本.
理想情况下,我想最终得到一个.net流对象,我可以在本地编写文件(服务器端).在这一点上,我只是在寻找非常基本的文件上传.
我目前可以进行JSON通信,但无法实现二进制文件的飞跃.目前我这么远而且陷入困境:
服务界面:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "SendFile")]
string SendFile(Stream stream);
Run Code Online (Sandbox Code Playgroud)
服务实施:
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;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<input type="file" id="fileInput" onchange='sendFile();' />
Run Code Online (Sandbox Code Playgroud)
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,
});
}
Run Code Online (Sandbox Code Playgroud)
在Chrome控制台中,我收到"非法调用"错误.我可以使用data: file.name,但这会很好.我需要发送文件内容流,以便我可以在服务器端重建它.
有任何想法吗?
您无法通过ajax发送文件。您必须使用集成了 SWF 对象的插件,您可以在其中上传某些文件类型(您定义什么)。
所以,我建议你使用 uploadify (我在我的 MVC3 项目中使用了它)。
或者您可以使用: http: //www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx
或者
http://www.codeproject.com/KB/WCF/UploadlargeFilesWCFHTTP.aspx了解更多文档
当然,google可以帮助你更多
| 归档时间: |
|
| 查看次数: |
6830 次 |
| 最近记录: |