Php 从S3下载获取文件大小

Php 从S3下载获取文件大小,php,Php,所以我把文件存储在AmazonS3上。我的客户从我们的网站下载这些文件,他们单击下载,它会将信息发送到我们的download.php页面(客户看不到此页面),但在那里它使用php获取文件名和路径(下面的代码)。但我们的问题是,它没有告诉浏览器文件大小,因此当客户下载时,他们会看到“剩余时间未知”。如何使download.php页面能够获得这些信息并单独传递 <?php $file_path = "http://subliminalsuccess.s3.amazonaws.com/"; $

所以我把文件存储在AmazonS3上。我的客户从我们的网站下载这些文件,他们单击下载,它会将信息发送到我们的download.php页面(客户看不到此页面),但在那里它使用php获取文件名和路径(下面的代码)。但我们的问题是,它没有告诉浏览器文件大小,因此当客户下载时,他们会看到“剩余时间未知”。如何使download.php页面能够获得这些信息并单独传递

<?php

$file_path = "http://subliminalsuccess.s3.amazonaws.com/";
$file_name = $_GET['download'];
$file = file_get_contents('$file_name');

header('application/force-download');
header( 'Content-Type: application/octet-stream' );
header('Content-Disposition: attachment; filename="'.$file_name.'"');

$pos = strpos($file_name, "http");

if ($pos !== false && $pos == 0)
{
readfile($file_name);
} else readfile($file_path.$file_name);

?>

这很简单。看,当您执行file\u get\u contents()时,您可以使用strlen()获得文件大小。然后在响应中发送内容长度头

<?php

$file_path = 'http://subliminalsuccess.s3.amazonaws.com/';
$file      = trim($_GET['download']);
$file_name = $file_path.$file;

$file_contents = file_get_contents($file_name)
    OR die('Cannot get the file: '.$file);

header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Length: '.strlen($file_contents));
header('Content-Disposition: attachment; filename="'.basename($file).'"');

echo $file;

谢谢您的帮助。我对PHP知之甚少,实际上我也没有编写代码,但这里没有人能够理解这一点,所以我就负责编写。然而,当我使用你上面粘贴的代码时,它实际上认为文件大小是50字节,而实际上它是一个MP3,更可能是300+MB或更大。有趣的是。。。我不知道为什么。你确定这是正确的文件吗?您的另一个选择是使用。您可以通过API获取文件,从响应中获取内容长度,并按照我向您展示的方式进行设置。它的定义是正确的文件,因为如果我返回到原始代码(未显示),它将完美下载,只是不显示剩余时间和文件大小。我现在要查看API链接。谢谢你的帮助,非常感谢。