簡體   English   中英

用php直接將文件上傳到amazon s3

[英]upload files to amazon s3 directly with php

解決:使用這篇文章: http//www.designedbyaturtle.co.uk/2013/direct-upload-to-s3-with-a-little-help-from-jquery/

編輯:我正在尋找一種方法直接將一個大的zip文件從客戶端上傳到亞馬遜s3,而無需先將其上傳到我的服務器

我正在使用一個小型服務器用於我的web應用程序與laravel框架我有一些用戶試圖將大文件上傳到我的servr(大約300-400m),我的服務器很弱,我的帶寬很低,用戶是能夠完成上傳。

我希望文件直接上傳到亞馬遜s3,從瀏覽我不認為這可能不適用於亞馬遜laravel sdk

我安裝了官方的sdk,我正在嘗試這樣做,就像在這篇文章中建議上傳發布的文件到亞馬遜s3

但不能確定如何實際將我的文件發送到亞馬遜s3,我應該把你的文件的字符串放在這里:

 $result = $client->upload(
'BUCKET HERE',
'OBJECT KEY HERE',
'STRING OF YOUR FILE HERE',
'public-read' // public access ACL
);

我得到這樣的文件:

$myFile = Input::file('file');

把$ myfile而不是'你的文件的字符串'放在這里是行不通的

我用這篇文章解決了這個問題:解決了:使用這篇文章: http//www.designedbyaturtle.co.uk/2013/direct-upload-to-s3-with-a-little-help-from-jquery/

您可以直接從客戶端將文件上傳到S3,但由於無法驗證文件,因此存在安全風險,而且任何人都可以訪問您的S3存儲桶通常是一個壞主意。 我仍然會看看你的Laravel應用程序上傳。

上傳到PHP的所有文件都存儲在您的服務器上,很可能存儲在Linux和Mac計算機的/tmp目錄中。 沒有辦法避免這種情況,文件需要存儲在某個地方。 使用Input::file('file')獲取表示文件的對象。

該文件是Symfony\\Component\\HttpFoundation\\File\\UploadedFile一個實例,它公開了一個getRealPath()方法。 然后我們可以使用fopen()以字符串形式讀取文件的內容。 所以要將其上傳到S3,請使用:

$client->upload(
  'bucket',
  'key',
  fopen($file->getRealPath(), 'r'),
  'public-read',
);

暫無
暫無

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

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