使用wcf从服务器获取文件并在客户端浏览器下载
Get a file from server using wcf and download at clients browser
我有一个WCF服务来读取文件内容,我使用JavaScript在我的网页上调用它,并获得内容作为响应。
现在我要做的是,而不是阅读它的内容,我必须下载这个文件从服务器到客户端系统,任何想法如何做得到一个文件从服务器使用wcf ?
WCF:-
public Stream getFileFromPath(string filepath)
{
String[] filename=filepath.Split('''');
WebOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";
if(File.Exists(filepath)
{
String headerInfo = "attachment; filename=" + filename[filename.Length - 1];
WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = headerInfo;
return File.OpenRead(filepath);
}
else
{
String headerInfo = "attachment; filename=" + "error.txt";
WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = headerInfo;
string errortext="file not found";
byte[] byteArray = Encoding.ASCII.GetBytes(errortext);
MemoryStream stream = new MemoryStream(byteArray);
return stream;
}
}
web . config: -
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="MyWcfRestService.WebHttp" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
transferMode="Streamed"
sendTimeout="00:05:00">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="MyWcfRestService.FileUploadServBehavior" name="MyWcfRestService.FileUploadServ">
<endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="MyWcfRestService.WebHttp" contract="MyWcfRestService.IFileUploadServ">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled=”true”/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyWcfRestService.FileUploadServBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
JavaScript : -
function downloadfile(filepath)
{
var url="https://abc/service.svc/getfilestream?v="+filepath;
window.open(url,"windowname","width:400,height:300");
}
相关文章:
- 删除客户端浏览器上不需要的内容
- AngularJS这样的开源Javascript是如何在客户端浏览器上运行的
- 在客户端/浏览器端存储照片(不是照片的链接)
- JS文件未在客户端浏览器上更新
- sails 客户端(浏览器)如何侦听从不同端口发出(爆破)的套接字消息
- php 服务器端计时器 独立于客户端浏览器
- 如何在客户端浏览器中执行类似SQL的查询
- 强制刷新客户端浏览器
- 如何从客户端浏览器中的内容生成和提示保存文件
- 如何在客户端(浏览器/CLI等)启用Javascript文件(如jQuery)和CSS文件的缓存
- 字节图像未从客户端浏览器保存在数据库中
- HTTPS协议的前端(客户端浏览器)是否需要密码加密
- NowJS-客户端/浏览器通信(不联系“所有人”)
- 在服务器上推送新版本后刷新客户端浏览器窗口
- 在客户端浏览器中滚动窗口
- 迫使客户端浏览器重新下载我们的asp.net网络应用程序的优雅方式'.css和.js文件(不完全禁用缓存)
- 如何在客户端浏览器上呈现完整网页的副本后立即在服务器端存储该副本
- 如何调试客户端浏览器/HTML结构的性能问题
- 如何在jQuery.post()之后将文件从Java发送回客户端浏览器
- 使用wcf从服务器获取文件并在客户端浏览器下载