民间
我在某个服务器上有一张图片(SOURCE) 即http://stagging-school-images.s3.amazonaws.com/2274928daf974332ed4e69fddc7a342e.jpg
现在我想把它上传到其他地方(DESTINATION) 例如example.mysite.com/receiveImage.php
首先,我将图像从源复制到本地服务器,然后将其上传到目标。 它完美地工作但是在复制图像然后上传时花费了太多时间...... 我希望通过直接将图像从源URL上传到目标URL来使其更加简单和优化。
有办法解决这个问题吗?
我正在使用php / cURL来处理我当前的功能。
非常感谢任何帮助。
干杯!!
答案 0 :(得分:2)
如果 example.mysite.com/receiveImage.php 是您自己的服务,那么您可以
否则通过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);