记PHP下载大文件失败的一次坑】的更多相关文章

说明 php提供文件的储存和下载,nginx作为web服务器,fpm做解析. 现象 当下载一个5M大小的图片时,总提示下载失败,或下载下来的文件不完整,仅显示部分图像(每次下载不一样) php下载相关代码 $file = BASE_PATH . '/public/files/IMG_5727.jpg'; $size = filesize($file); header( "Content-type: application/octet-stream" ); header("Ac…
1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: 3.解决:分段下载,并限制下载速度:   <?php   //设置文件最长执行时间   set_time_limit(0);       if (isset($_GET['filename']) && !empty($_GET['filename'])) {   $file_name =…
场景 github下载大文件,使用浏览器下载zip包到本地在下载到1G时失败, 使用 git clone ssh下载速度20k/s以下,已fq. 解决方法(亲测) 1.下载Github Desktop 2.对git进行一些全局配置:在git配置文件中配置如下: [http] postBuffer = 5242880000 lowSpeedLimit = 0 lowSpeedTime = 999999 或命令行修改 再使用github desktop进行git clone ssh,速度约在200k…
多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.File; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; import java.util.LinkedHashMap; import java.util.Map; im…
场景: 1. 在Windows编程时, 下载http页面(html,xml)能够使用winhttp库,可是并非非常下载文件,由于会失败. 由此引出了WinINet库,无奈这个库的稳定性比較低,使用样例又少, 下载大文件时常常是不完整,可查找的资料非常少或者是没有特殊情况的解决的方法. 2. 我的原则是假设系统有自带的就用系统的,可是 WinINet 要掌握须要花不少时间. 时间因素考虑到了libcurl. 3. libcurl支持ftp,http等协议的文件读取,还能自己主动获取文件大小, 最重…
以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载. 该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存.当下载文件比较大时,服务器压力会很大,iis虽然支持2G大小的文件下载,但当文件上了很多M时,由于服务器以及网络等因素的影响,异常概率相当大.所以当需要下载大文件时就不能使用上面的方法了. 微软推荐以下方法代替之: ■将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据.■为用户提供用于下载文件的链接. ■使…
1. wget def download_big_file_with_wget(url, target_file_name): """ 使用wget下载大文件 Note: 需要系统安装wget """ import os import subprocess download_process = subprocess.Popen(["wget", "-c", "-O", target_fi…
当使用requests的get下载大文件/数据时,建议使用使用stream模式. 当把get函数的stream参数设置成False时,它会立即开始下载文件并放到内存中,如果文件过大,有可能导致内存不足. 当把get函数的stream参数设置成True时,它不会立即开始下载,当你使用iter_content或iter_lines遍历内容或访问内容属性时才开始下载.需要注意一点:文件没有下载之前,它也需要保持连接. iter_content:一块一块的遍历要下载的内容 iter_lines:一行一行…
此文章仅作为本人的笔记,文章转载自  http://blog.csdn.net/defonds/article/details/46042809 Nginx 做反向代理,后端是 tomcat,chrome 浏览器访问项目时加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH: 查看 linux 日志:2015/05/27 02:19:10 [crit] 29263#0: *72 open() "/usr/local/nginx/proxy_temp/3/00/000000000…
当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(这个网址可以找到大部分文件类型的对照表:http://tool.oschina.net/commons) 3. 在每次写完response时记得调用 Response.Flush()…
当我们的ASP.NET Core网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 将数据分成较小的部分,然后将其移动到响应输出流以供下载,从而获取这些数据. 根据下载的文件类型来指定 Response.ContentType .(这个网址可以找到大部分文件类型的对照表:http://tool.oschina.net/commons) 在每次调用Response.Body.Write后记得调用…
原文:http://www.cnblogs.com/luisliu/p/4253815.html 当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. 关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(这个网址可以找到大部分文件类型的对照表:http://tool.oschina.ne…
Linux如何使用cURL分割下载大文件 - 51CTO.COM http://os.51cto.com/art/201508/489368.htm…
今天首次使用DBeaver软件链接数据库时会进行下载驱动文件,例如如下图所示: 在上图中显示了下载驱动文件失败,提示“无法解决库文件,请检查网络设置”.其实,是可以正常上网的,可能是公司内网的限制,或者是国外镜像地址无法访问.根据这情况,先检查是不是公司内网限制所致.点击上图中的左半部分图“下载配置”项,会弹出如下图所示的对话框: 在上图中,我设置了在公司内网的HTTP代理后进行下载操作,还是提示下载失败:这可能是无法访问外部的镜像地址了,那是否可以采用公司内网的maven下载地址呢?我不妨进行…
问题场景 点击导出按钮,提交请求,下载excel大文件(超过500M),该文件没有预生成在后端, 直接以文件流的形式返回给前端. 解决方案 在Vue项目中常用的方式是通过axios配置请求,读取后端返回的文件流,常用代码如下: axios({ method: 'post', url: 'api/file', responseType: 'blob' }).then(res=> { if (res.data){ filename = 'filename'; let blob = new Blob(…
IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag         客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载: Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载,存放本次下载的开始字节位置.文件的字节大小: ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间,以便续传请求时对文件进行…
如果出现大文件被截断,且ngix的日志大量出现以下类似报错: 则说明是nginx没有fastcgi_temp的读写权限.其中fastcgi_temp是自己的文件夹名称,每个人的不同且路径也会不同,这个看你的nginx配置.比如我这的就是/data/nginx/proxy_temp 知道原因,解决起来就方便多了:chmod -R 777 /data/nginx/proxy_temp 赋予权限就可以了. 原因:每次下载失败时文件的大小总是64KB.原来,nginx会使用fastcgi_buffer_…
java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作2.服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3.服:每接收到一个Socket就建立一个新的线程来处理它4.客:利用Socket进行远程连接,询问已上传进度5.客:使用FileInputStream.skip(long length)从指定位置读取文件,向服务器…
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"…
一.实验环境 ubuntu16.04 + 百度在线云盘 二.下载小文件步骤 小文件直接点击右侧的下载按钮即可,弹出文件保存对话框 三.大文件下载步骤 大文件使用如上方式下载时提示,请使用网盘客户端下载 请按照如下步骤安装.设置 1. 进入Firefox插件地址 https://addons.mozilla.org/zh-CN/firefox/addon/baidu-pan-exporter/ 选择添加到firefox 2. 重启Firefox浏览器 3. 安装aria2 :$sudo apt-g…
下面分别是各种原因以及解决办法:第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定则 PHP 使用系统默认值.php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限. 第2种情况:max_execution_time 的值必须足够大.变量 max_execution_time 设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算.…
主要思想,就是创建一个与目标文件等大小的空白文件,然后分段往这个空白文件中写入数据. 可以通过发送HEAD请求,获得服务器中文件的具体大小,然后再将这样的长度分割成若干等大的数据块,在发送get请求时,通过设置 请求头信息,可以确定好单个线程中下载文件的起始长度和结束长度. 比如说,目标文件大小事900M,在下载时,开三条线程来下载,size = 300.那么第一条线程就该是0~~299M的任务 第二条线程是300~~599M的任务,第三条则是600M~~最后的大小,当不能整除时,每个size+…
在写这篇的时候本来想把标题直接写成报错的提示,如下: “SecurityError:Blocked a frame with origin "http://localhost:55080" from accessing a cross-origin frame.” 但是有点长,会显示不全,就想还是换一下吧,想了一下 “ASP.NET 上传过大图片或文件报错解决办法”, 然后当我写完这个题目之后,我觉得这篇文章好像根本没有写的必要,估计看完题目就会想到关于web.config配置的方面了…
遇到了线上发布任务失败的情况,要发布的包大小77M,网络OK,手动测试速度是1.7M,下载77M文件用时17s左右,理论上完全没有问题 但是,从日志看确实是download的时候,60s 超时了,而且没有具体的日志记录,所以看了下这个模块的初始化方法 initialize(self, io_loop, max_clients=10, hostname_mapping=None, max_buffer_size=104857600, resolver=None, defaults=None, ma…
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭浏览器后再打开)仍然能够继续上传,重启电脑后仍然能够上传 支持文件夹的上传,要求服务端能够保留层级结构,并且能够续传.需要支持10万个以上的文件夹上传. 支持低版本的系统和浏览器,因为这个项目…
# 一个校花网图片下载的案例,也适合大文件处理,多个文件视频,音频处理 工程流程 -- scrapy startproject xx cd xx scrapy genspider hh www.xx.com 爬虫执行 scrapy crawl hh import scrapy from yyl.items import YylItem class ExampleSpider(scrapy.Spider): name = 'xiaohua' # allowed_domains = ['exampl…
关于此代码的几点说明: 1. 将数据分成较小的部分,然后将其移动到输出流以供下载,从而获取这些数据. 2. 根据下载的文件类型来指定 Response.ContentType .(参考OSChina的这个网址可以找到大部分文件类型的对照表:http://tool.oschina.net/commons) 3. 在每次写完response时记得调用 Response.Flush() 4. 在循环下载的过程中使用 Response.IsClientConnected 这个判断可以帮助程序尽早发现连接…
我想用python脚本下载很多文件,但是经常就有那么几个出错,写了个error handling,跳了过去,但是把出错的链接保存了一下. 转过天来,研究了一下出的什么错. 一个报错如下: PS C:\temp> python .\DownloadFromList.py Downloading https://github.com/Unity-Technologies/ScriptableRenderPipeline/archive/master.zip Traceback (most recen…
不小心把数据库备份文件放到git目录里了,导致无法上传代码. 首先参考了 这篇文章 http://www.cnblogs.com/qmmq/p/4604862.html. 按照文中一开始说的去做,可还是无法成功. 后来看到这句话: 如果做了这几步你push的时候还是报和开始的时候一样的错,那说明这个文件你不是最近一次commit时添加的,而是在之前commit过很多次了,这就需要把关于这个文件的所有历史commit记录全部清除掉. 这样,我由此想到,如果把提交大文件的几次提交取消掉不就可以了吗?…
项目上用百度webuploader.js上传文件,option选项里面已经设置单个文件大小,但是上传低于此阈值的文件时仍然不成功. 我现在的理解是,框架是将文件post到后台服务器端的.. 百度发现是IIS里面对大文件有限制.. <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRe…