2012-05-26 58 views
1

我有一個使用imagecopyresampled處理的圖像資源。我需要將該圖像傳遞給一組需要字符串輸入的方法,而不是資源。但我不需要在本地存儲文件。爲PHP存儲臨時圖像文件的正確方法

這是正確的方法:

  1. 存儲與imagepngimagejpeg
  2. 傳遞字符串(文件名)的方法的圖像
  3. 破壞與@unlink

存儲的文件是那對嗎?似乎馬虎。

注:該圖片不是從文件上傳過來的,因此不能用$_FILES["Filedata"]["tmp_name"]

+0

你能否介紹一下這些方法的更多細節,以及他們需要/問什麼?有點難以告訴你需要做什麼,否則。 – Death

+1

說實話,這裏的主要問題是這些圖像源自哪裏?如果他們來自表單上傳,那麼該圖像已經存儲在臨時位置,因此您不需要自己存儲圖像。 – Peter

+0

@彼得,他們不是從形式上傳。我從CDN中拉出一張圖像,裁剪它,然後將裁剪後的版本發送回CDN(Amazon S3 CDN +他們的類和方法)。 – Kyle

回答

0

訪問我看了一下亞馬遜S3 PHP API: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/upload_part

我想你正在使用類似upload_part的方法,它採用字符串filename。在這種情況下,除非您打算修改其庫,否則您需要將文件存儲到磁盤並將文件傳遞給它們,以便他們可以讀取文件並執行上載。

除了你的問題中提到的步驟,你可以看看imagedestroy,以確保你的圖像資源的內存釋放後,它被寫入磁盤imagepng。然後,如您所述,您可以在上傳完成後使用unlink刪除臨時文件。

我同意,它看起來有點浪費,但在這種情況下是必要的,因爲API似乎沒有提供替代方案。

+0

謝謝!非常有用的答案。 – Kyle