2011-05-29 159 views
1

好的,我有一个问题的家伙。我想通过将链接放入TEXTAREA并点击提交来远程上传(从站点复制图像到我的服务器)多个图像。我只是不知道如何使这可能与多个图像。远程上传多张图片

我可以使用copy();函数,但不适用于TEXTAREA中的多个条目。

我也想限制远程上传功能多达30个远程链接和一个图像不应超过10MB - 但我不知道如何开始。我听说cURL能够做到这一点,我也听说file_get_contents();与file_put_contents();可以做出类似的事情,但我仍然无法弄清楚如何自己做。

帮助任何人? :)

回答

1

您可以使用与您现在使用单个图像相同的过程,但在一个循环中执行。

$lines = explode("\n", $_POST['textarea']); 
if(count($lines) > 30) { 
    die('Too many files'); 
} 
foreach($lines as $line) { 
    $srcfile = trim($line); 
    //copy $srcfile here 
    //check size of the file with filesize() 
} 
+0

我正在尝试此解决方案。你的解决方案只是另一个问题:我如何将所有保存的图像输出到我的服务器中的链接? – Aborted 2011-05-29 11:39:58

+0

我可以让它只工作,给我链接所有链接的最后一个链接,而不是所有的链接。 – Aborted 2011-05-29 12:07:23

+0

构建链接的数组。您可以在foreach循环中将元素添加到数组中。 – 2011-05-29 12:48:43

1

您需要解析textarea以外的URL。你可以在这个PHP端使用正则表达式。

然后,您可以检查解析URL和array_slice()第30,或错误,如果超过30

你会那么需要将文件从远程服务器复制。您可以检查Content-Length标头以确保文件小于10mb。您可以使用HEAD而不是GET

1

我不熟悉PHP,但我建议如下:

解决多个文件上传问题:

  • 分裂用回车在文本区域的内容

  • 然后重复它们以获得图像

preser每个文件的大小在一个变量中,但如何获得大小?

  • 你可以做的exec(系统)调用知道文件的大小(这需要一个完整的图像下载,但它是最便捷的方式),或者您可以使用Content-Length头值的,如果内容长度超过10毫克然后跳过它并移动到下一个项目。

如何下载图像?

  • 使用文件放置内容但确保将编码设置为二进制编码以保留内容类型。