簡體   English   中英

使用圖像URL和PHP將圖像從遠程服務器上傳/下載/保存到本地服務器?

[英]Upload/download/save image to a local server from a remote server using an Image URL and PHP?

我正在構建一個討論論壇,作為我正在構建的更大應用程序的一部分,該論壇只是該應用程序的一部分。

對於發布新主題或發布回復時的TextArea字段,我認為沒有什么比PageDown Markdown Library更好。 StackOverflow在其所有站點上使用的都是同一款產品,並且比許多競爭對手更有效。

雖然該庫的發布方式對默認的“ Insert Image功能不滿意。 您單擊按鈕以插入圖像,它允許您輸入圖像的URL,然后插入正確的MarkDown語法以顯示鏈接的圖像。

這只是不會削減。 我需要您在StackOverflow上看到的功能! 反正很相似。

當您單擊“插入圖像”按鈕時,我需要它顯示一個對話框,就像現在一樣,但是它不僅具有圖像URL的輸入字段,還將具有2個字段選項...

  • 從您的計算機上傳圖像
  • 插入圖像URL,然后它將從該URL下載圖像並將其插入到帖子中,就像您是從計算機上載的一樣。 這對於不要混淆此步驟很重要。 IT人員不應簡單地插入將其鏈接到原始圖像URL的圖像。 取而代之的是,它將使用該URL並將圖像下載/上傳到與upload from computer選項相同的服務器upload from computer ,然后它將插入指向新上載圖像的NEW Image URL!

基於一些簡單的HTML,例如下面的“對話”窗口,其中包含我已經從“計算機上載”功能提交的文件。 我需要提供一些JavaScript和PHP,當僅使用URL文本輸入字段中的URL單擊按鈕時,它們將下載/保存遠程圖像到服務器上的上傳文件夾。

因此,它需要做一些事情...

  • 當PHP函數將接收的唯一內容是圖像的URL時,可以使用PHP提取圖像文件並將其保存到我的上載文件夾中,該圖像可以位於同一服務器上,也可以位於遠程服務器上。
  • 從URL成功保存/上傳圖像后,PHP函數將返回狀態/錯誤的JSON字符串,如果成功,則還將返回實際圖像和本地服務器上新圖像的保存位置的URL和文件名。 JavaScript / AJAX腳本將收到此JSON響應,並將圖像的Markdown語法插入PageDown編輯器。
  • PHP函數將需要確保它嘗試保存/下載的URL是有效的圖像文件,而不是某些惡意文件! 除非我們允許該文件類型,否則不只是錯誤文件類型的文件,例如非圖像文件。
  • 它是許多恐龍服務器上安裝的模塊的一部分,因此它也需要在盡可能多的服務器上工作!

    通過網絡

    從您的計算機

如果有任何幫助,技巧,代碼段或任何有關此方面的幫助,我將不勝感激。 在此階段,我真的只需要構建一個nie PHP函數即可從遠程URL上傳圖像,並確保傳入的URL是真實圖像文件,甚至更好的是它位於允許的文件類型數組中!

幾年前,我已經開始這樣做了,但是現在卻迷失了方向。

從遠程服務器下載文件的最簡單方法是使用copy( http://php.net/manual/en/function.copy.php ):

copy('http://someurl.com/image.png', '/var/www/uploads/image.png');

由於此函數返回布爾值,因此很容易確定操作是否成功並創建JSON響應。

要驗證該文件是否為實際圖像,很遺憾,無法百分百確定。 雖然可能足以檢查模仿類型。 您可以為此使用finfo( http://php.net/manual/en/function.finfo-file.php ):

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename);
finfo_close($finfo);

對於gif,例如,將返回image / gif。 您將必須對要允許的所有mimetypes列表進行硬編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM