使用HTML5和/或jQuery将文件上载到WCF服务

时间:2011-12-30 20:53:46

标签: jquery ajax wcf

我正在尝试仅使用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 个答案:

答案 0 :(得分:0)

你不能通过ajax发送文件。 你必须使用一个集成了SWF对象的插件,你可以上传一些文件类型(你定义了什么)。

所以,我可以建议你使用uploadify(我用它进入我的MVC3项目)。

或者您可以使用: http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx

http://www.codeproject.com/KB/WCF/UploadlargeFilesWCFHTTP.aspx了解更多文档

当然,谷歌可以帮助你more