下载时获取文件大小

下载时获取文件大小

获取文件大小,有时候会出现文件大小为0的情况,一般来说,这是由于我们无法获取文件头中的“Content-Length”造成,通常有两种原因:

 

1. 服务器压根就没有设置这个属性(现在的服务器基本上都有)

2. 由于将“Accept-Encoding“设置为gzip,就是压缩传输,从而将Content-Length属性隐藏了,导致我们无法获取

 

The expected content length is only set when the server provides it, such as by a Content-Length response header. A -1 size means the expected content size is unknown.

If you set Accept-Encoding: gzip on your request, the URL loading system will fib and tell you the expected size is -1, no matter what Content-Length the server sends. This is because it decompresses the data before passing it to you, but it can't know the final uncompressed size till all the data has been downloaded, which is well after you receive this callback.

 

针对第二种情况,首先可以检查响应头中的“Accept-Encoding“的属性是否为"gzip",如果是的话,就在下载请求中手动设置“Accept-Encoding“:

[req setValue:@""forHTTPHeaderField:@"Accept-Encoding"];

这时候再去检查响应头,Content-Length属性就出来了。

 

时间: 2024-09-20 00:00:27

下载时获取文件大小的相关文章

VeryCD下载链接获取技巧分享

来源:连邦IT服务平台 编辑:屈狄 发布时间:12-04-26 VeryCD下载链接获取技巧: 1.VeryCD目前除了部分热门资源外,大多资源页面还是有"搜索下载"的,一般只需点开搜索即可找到下载页面,点击里面的下载按钮就可下载.不过 VeryCD默认需要安装它的电驴软件才可以弹出下载,如果不想安装可以用GoogleChrome浏览器打开,这个就不会提示安装,它会自动启动你系统中已经安装的下载软件进行下载(也可在Chrome浏览器下鼠标右键点击下载按钮,选择审查元素即可找到ed2k下

js+ajax实现获取文件大小的方法_javascript技巧

本文实例讲述了js+ajax实现获取文件大小的方法.分享给大家供大家参考,具体如下: 顾名思义,通过JS和Ajax来获取上传文件的大小,在上传之前可以有个判断,对上传的文件有所控制,因为js控制文件大小(JS获取文件大小)有些问题,具体大家试下就知道了,在此整理了一下ajax的获取文件大小的方法,比较好用,再调试过程中,出现了c:/fakepath/ 的错误,也将解决方案罗列在下面,以供大家参考 废话少说,代码如下 JS如下: <script language="Jscript"

java 获取文件大小

Java 中如何获取文件的大小呢? 有两种方式 方式一:使用File 的length()方法; 方式二:使用FileInputStream的available()方法; 实例: Java代码   @Test       public void test01() throws IOException {           String filepath = "d:\\bin\\pushpoxy-0.0.1-SNAPSHOT.jar";           System.out.prin

【转】Java 获取文件大小所隐藏的BUG

由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用FileInputStream的available()方法,当InputStream未进行read操作时,available()的大小应该是等于文件大小的.但是在处理大文件时,后者会发生问题.我们来看一下: 在例子中,我使用了CentOS 6.5 的安装镜像文件,主要是考虑到这个文件足够大(大于2

Java中获取文件大小的详解及实例代码_java

 Java 获取文件大小 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用FileInputStream的available()方法,当InputStream未进行read操作时,available()的大小应该是等于文件大小的.但是在处理大文件时,后者会发生问题.我们来看一下: 在例子中,我使用了CentOS 6.5 的安装镜像文件,主要是考虑到这个文件足够大(大于2GB). 1.使用File的length()方法 publi

MYSQL客户机程序4—在运行时获取连接参数

    6.5 客户机程序4-在运行时获取连接参数     现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值.客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译.这十分不方便,特别是想使程序用于其他人时.在运行时指定连接参数的一个通用的方法是使用命令行选项.MySQL分发包中的程序接受两种形式的连接参数,如表6 - 1所示.    与标准的MySQL客户机程序一致,

C/C++多种方法获取文件大小

C/C++多种方法获取文件大小 #include <iostream> #include <io.h> #include <sys\stat.h> #include <afx.h> #define _AFXDLL using namespace std; void main() { // 此文件在工程打开状态下为不可访问 char* filepath = "..\\test.ncb"; // 方法一 struct _stat info;

tp路由器创建id时获取不到验证码怎么办

  tp路由器创建id时获取不到验证码的解决方法一.确认线路连接正确 创建TP-LINK ID时,需要确认手机或邮箱收到的验证码,如果填写信息后一直没有收到验证码,则无法创建.如下图. 当做普通路由器使用(WAN口连接宽带)或WDS桥接当做副路由器时,可以使用云服务. 路由器当做交换机(LAN-LAN级联)使用的时候,无法使用云服务.在创建TP-LINK ID时无法获取到验证码,会提示"发送请求失败". tp路由器创建id时获取不到验证码的解决方法二.确认填写信息正确 确保输入正确的手

Win7下载时频繁掉线的解决方法

用上Windows7后,笔者发现一个问题:使用下载软件(如旋风.快车)下载时,时间长了就会自动停止,下载软件会处于掉线状态.经过摸索后,才明白原来是网卡电源设置问题造成的.如果你也遇到过类似问题,可通过如下方法解决. 进入控制面板,单击"网络和Internet"选项,然后单击"网络和共享"中心,再单击左侧的"更改适配器设置"按钮,右击"本地连接"选择"属性"出现对话框,单击"配置"按钮按