有没有办法在php中循环访问地址并一次(或一个接一个)下载多个文件


Is there a way to loop through addresses and download multiple files at once ( or one after the other ) in php?

好的,所以我有一个网站,有许多不同的数据集可供下载。现在,与其单独浏览并单击每个文件并选择将每个文件保存到我的 PC,有没有一种方法可以使用 PHP 循环并强制下载我想要的所有文件。在这种情况下,我是用户,无法访问服务器端。我已经读到的大多数内容都是人们建立自己的网站供其他用户下载的内容。

详:

现在,我知道每个文件都位于blahblah.com/downloadset1,/downloadset2, ... ,/downloadsetN

然后,我可以设置一个文本框,可以在其中输入所需的每个设置数字,用逗号分隔。例如:[ 1, 2, 300, 4325 ]

从那里,我可以让脚本将文本框值附加到"blahblah.com/downloadset"的末尾

这将给我一个数组(blahblah.com/downloadset1、blahblah.com/downloadset2、blahblah.com/downloadset300、blahblah.com/downloadset4325)

现在这些地址没有内容,只有下载本身,所以如果我在我的地址栏中输入它们,下载弹出窗口就会出现,要求保存或打开。

我可以在脚本中写入一些内容以使其遍历我的新下载地址数组并以"保存"开始下载,而不会要求我输入每个地址吗?

如果希望能够保存文件,则必须在可以写入的计算机上运行脚本。因此,假设您在本地机器上运行了 php;然后,您可能需要回答两个问题。

1) 如何列出我要下载的文件的名称?

2) 如何以编程方式下载文件?

从你的问题听起来你弄清楚了第一部分。我将只介绍第二部分 - 制作一个下载列表中所有文件的 php 脚本。有两种常见的技术 - curl (sometimes written cURL)wget .当您键入"使用 curl 下载文件"或"使用 wget 下载文件"时,您可以找到大量信息,所以我只举一个最小的例子:这会从http://www.floris.us/SO/IMG_0250.jpg读取一个图像,并在 image1.jpg 保存本地副本。如果将脚本另存为 curlTest.php ,则可以使用

php curlTest.php

你应该能够从这里开始(构建一个循环,添加诊断,错误检查......

<?php
$url = 'http://www.floris.us/SO/IMG_0250.jpg';
$outputfile = "image1.jpg";
$cmd = "wget -q '"$url'" -O $outputfile";
exec($cmd);
?>

如果我误解了您的设置,请在评论中告诉我。