我正在下载一个歌曲文件。下面的代码(好吧,原始代码,这只是我正在做的一个示例)在Asha 310设备上运行良好。然而,在较新的Asha 501设备上,下载的文件比实际文件大得多。如果我使用512缓冲区,一个2.455.870字节的文件最终会下载2.505.215字节,而且它也不会加载。使用4096缓冲区,文件大小最终为3.342.335字节!!
发生这种情况的原因是什么?它在另一部手机上运行良好,我使用了非常合理的缓冲区。
downloadedFile = (FileConnection) Connector.open(saveLocation+"testing.m4a", Connector.READ_WRITE);
if (!downloadedFile.exists()) {
downloadedFile.create();
}
ops = downloadedFile.openOutputStream();
hc = (HttpConnection) Connector.open(url);
hc.setRequestMethod(HttpsConnection.POST);
hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
String postData = "sid=" + session.sid + "&fileid=" + file.getId();
byte[] request_body = postData.getBytes();
DataOutputStream dos = null;
dos = hc.openDataOutputStream();
for (int i = 0; i < request_body.length; i++) {
dos.writeByte(request_body[i]);
}
byte[] buf = new byte[512];
dis = hc.openInputStream();
int downloadSize = 0;
while (dis.read(buf) != -1) {
ops.write(buf, 0, buf.length);
downloadedSize += buf.length;
}
结果表明,缓冲区没有被完全填满,所以每个缓冲区中未填满的部分都是垃圾。这就解释了为什么当设置了更大的缓冲区时,文件会更大,因为它有更多的垃圾。
http://developer.nokia.com/Community/Discussion/showthread.php/244179-Download-size-larger-than-available-stream-file-size-(Asha-501)
int len;
while((len=dis.read(buf))!=-1)
{
ops.write(buf,0,len);
downloadedSize += len;
}
编辑:它在老式手机上工作,因为它们一直用实际数据填充整个缓冲区。新的设备没有。
问题内容: 我正在从远程位置下载文件,对于较小的文件,下载已完成;对于较大的文件(> 10 MB),下载未完成。这是我用于从远程服务器下载文件的代码。 问题答案: 您可以使用apache commons IO库。这很容易。我已经在许多项目中使用过它。
问题内容: 基本上,我想确定是否应该使用AJAX下载文件,具体取决于文件大小。 我猜这个问题也可以表述为:我如何仅获取ajax请求的标头? 编辑 :评论中的ultima-rat0告诉了我两个已经被问到的显然与这个相同的问题。它们非常相似,但是都需要jQuery。我想要一个非jQuery解决方案。 问题答案: 您可以手动获取XHR响应头数据: http://www.w3.org/TR/XMLHttp
我正在下载PDF文件从服务器使用骆驼SFTP组件。有时它是下载零大小的文件。但实际大小为4KB。我认为camel正在下载文件,而文件正在编写。请让我知道如何下载文件后,文件写入操作完成。举个例子。
我在两个不同的服务器上使用这个脚本: 这些服务器具有相同的PHP版本和相同的PHP Curl版本。以下是curl结果的两个不同标题: 工作一: HTTP/1.1 302查找日期:2012年6月12日星期二07:04:35 GMT服务器:Apache/2.2.16(Debian)X-Powered-By:PHP/5.3.3-7 squeeze13过期时间:1981年11月19日星期四08:52:00
问题内容: 以下代码是我编写的PHP Web服务的一部分。它需要一些上载的Base64数据,对其进行解码,然后将其附加到文件中。这一切都很好。 问题是,当我在追加操作之后读取文件大小时,会得到文件在追加操作之前的大小。 我究竟做错了什么? 系统是: PHP 5.2.14 阿帕奇2.2.16 Linux内核2.6.18 问题答案: 在基于Linux的系统上,提取的数据是“ statcached”。
问题内容: 有没有一种方法可以获取远程文件http://my_url/my_file.txt的大小而无需下载文件? 问题答案: 在这里找到有关此的一些信息: 这是(我发现)获取远程文件大小的最佳方法。请注意,HEAD请求不会获取请求的实际主体,它们只是检索标头。因此,对100MB的资源进行HEAD请求所花费的时间与对1KB的资源进行HEAD请求所花费的时间相同。 用法: