MVC中的File()向客户端发送文件时,用浏览器自带的下载功能可以下,但用讯雷下却会报错。如何解决啊?下的是一个PDF文件。
你是不是直接从磁盘上读取文件返回的,
那有可能会锁住文件,你直接用浏览器因为是单线程的所以没有问题,但如果你2个一起下就会出异常了
猜测```迅雷一般都会想原连接发送多个请求
我用了2 种方式:1直接返回文件路径,2将文件用new File()打开成文件流。用讯雷下都会出现讯雷提示:任务出错。
@南昌——Quan: 正常,你的处理方法不对.
1.加锁
2.将文件读取到内存中
3.释放锁
4.返回内存流
这个会有内存占用问题,不过可以优化,但应该迅雷下载就不会报错了.而且mvc的fileresult能支持断点续传吗?
明显是迅雷自己的问题,这个你也要解决?
你好伟大
你这个问题我遇到过,后来发现迅雷会访问File() 方法2遍,而且第二次的时候会把给File传的参数什么的丢掉(中文会乱码),而迅雷报错的原因往往就是第二遍发生的,所以后来想的解决办法是,前台点a标签或下载按钮的时候,通过js控制调用后台方法返回string的文件路径,然后通过前台js window.open 打开文件路径下载就行了
mvc的file不支持续传功能,需要自己写。
我也看到了这个问题。是迅雷开启的原因。。不知道能不能使用代码关闭迅雷来实现这个操作。这样做的话不知道合不合理
用 context.HttpContext.Response.TransmitFile
应该可以支持断点续传.
迅雷下载的地址都是下载一个固定的文件路径,如果你post参数,然后动态返回文件,这个迅雷是实现不了的,get方式传参你可以试试。
我也十分想不通,怎么会出错,难道楼主的PDF很大?