如何将源URL中的图像上传到某个目标URL?

时间:2010-10-27 07:01:11

标签: php curl

民间

我在某个服务器上有一张图片(SOURCE) 即http://stagging-school-images.s3.amazonaws.com/2274928daf974332ed4e69fddc7a342e.jpg

现在我想把它上传到其他地方(DESTINATION) 例如example.mysite.com/receiveImage.php

首先,我将图像从源复制到本地服务器,然后将其上传到目标。 它完美地工作但是在复制图像然后上传时花费了太多时间...... 我希望通过直接将图像从源URL上传到目标URL来使其更加简单和优化。

有办法解决这个问题吗?

我正在使用php / cURL来处理我当前的功能。

非常感谢任何帮助。

干杯!!

5 个答案:

答案 0 :(得分:2)

如果 example.mysite.com/receiveImage.php 是您自己的服务,那么您可以

  1. 将SOURCE URL作为GET或POST参数
  2. 传递给PHP脚本
  3. 在PHP脚本中,使用file_get_contents()函数通过URL获取图像,并将其保存到存储中
  4. 否则通过HTTP无法实现。

    但是,有一些方法可以稍微提高文件上传速度:

    • 如果文件很大,你可以使用两个线程:一个用于下载(它将所有下载的数据存储到某个缓冲区)和一个用于上传(它将从缓冲区获取所有可用数据并将其上传到站点) 。据我所知,使用PHP无法轻松完成,因为目前尚不支持多线程。

    • 如果文件太多,您可以使用多个线程/进程,这些线程/进程会同时下载/上传。

    顺便说一句,这些方法并不能消除中间服务的双重流量。

答案 1 :(得分:0)

其中一个服务可能有某个表单允许您指定从/发送到的URL,但是没有通用的HTTP机制。

答案 2 :(得分:0)

将图像直接从源传输到目标的唯一方法是从源或目标启动传输。如果没有它们直接相互通信,您就无法在这两个位置之间神奇地传输数据。如果您可以通过SSH登录到mysite.com服务器,则可以直接从该处下载映像。您还可以编写一个在mysite.com上运行的脚本,并直接从源代码下载图像。

如果无法做到这一点,最好的选择可能是使用fread / fwrite而不是curl。这应该允许您从源中读取一点,然后直接将该位上传到目标,以便下载和上载可以并行工作。对于巨大的文件,这应该是一个真正的区别,对于一个体面的连接上的小文件,它可能不会。

答案 3 :(得分:0)

copy($ url,$ uploadDir。'/'。$ fileName);

答案 4 :(得分:-1)

创建两个textfield one url,其他文件名 在PHP中,使用: uploadDir是文件目录的路径;)

 copy($url, $uploadDir.'/'.$fileName);