2013-04-27 9 views
6

पर अपलोड करने के लिए PHP का उपयोग करके मैंने php का उपयोग करके अमेज़ॅन एस 3 पर फ़ाइल अपलोड को लागू करने के लिए ट्यूटोरियल के बाद पिछले कुछ घंटों खर्च किए हैं। मैंने अपने सर्वर (S3.php के रूप में) में डोनोवन शॉनकेन्च की एस 3 कक्षा का नवीनतम संस्करण अपलोड किया है और मैं अपलोड क्षमता का परीक्षण करने के लिए निम्न कोड का उपयोग करने की कोशिश कर रहा हूं। मुझे पता है कि यह कोड काम करेगा क्योंकि मैंने कार्रवाई में कई उदाहरण देखे हैं।अमेज़ॅन एस 3

<?php 

require('S3.php'); 

$s3 = new S3('KEY', 'SECRET KEY'); 

//insert into s3 
$new_name = time() . '.txt'; 

S3::putObject(
'upload-me.txt', 
'bucketName', 
$new_name, 
S3::ACL_PUBLIC_READ, 
array(), 
array(), 
S3::STORAGE_CLASS_RRS 

); 

?> 

जब मैं इस पृष्ठ को लोड करने का प्रयास करता हूं तो मुझे 500 सर्वर त्रुटि त्रुटि होती है। इसके अतिरिक्त, इस प्रकृति के हर दूसरे सम्मानित ट्यूटोरियल ने मुझे एक ही त्रुटि दी है 500.

मैंने सत्यापित किया कि मेरी कुंजी और गुप्त कुंजी साइबरडक के साथ S3 से कनेक्ट करके मान्य है।

क्या किसी के पास कोई संकेत है कि मैं गलत तरीके से क्या कर सकता हूं?

धन्यवाद,

शॉन

+1

500 त्रुटि शायद आपके पी में एक त्रुटि है एचपी कोड। त्रुटि संदेश देखने के लिए display_errors चालू करें या अपने लॉग जांचें। – datasage

उत्तर

8

जैसा कि यह पता चला है, मैं PHP के लिए कर्ल एक्सटेंशन खो रहा था और यह एक समस्या उत्पन्न कर रहा था क्योंकि मैं जिस एस 3 कक्षा का उपयोग कर रहा था वह curl के उपयोग की आवश्यकता थी। सब अब काम कर रहे हैं।

0

मैं S3 एपीआई से परिचित नहीं हूँ, लेकिन मैं https://github.com/KnpLabs/Gaufrette साथ भंडारण के रूप में इस्तेमाल किया। गौफ्रेटे एक पुस्तकालय है जो एस 3 और अन्य फाइल सेवाओं/प्रणालियों के ऊपर बहुत अच्छी अमूर्त परत प्रदान करता है।

8

आपको आधिकारिक AWS SDK for PHP का उपयोग करने पर विचार करना चाहिए। एसडीके के साथ एस 3 का उपयोग करने के उदाहरण उनके S3 user guide में पाए जा सकते हैं।

+0

PHP के लिए आधिकारिक एडब्ल्यूएस एसडीके केवल संगीतकार के साथ काम करता है और अब कोई ज़िप फ़ाइल डाउनलोड नहीं है। मैं अपनी कुछ वेबसाइटों के लिए साझा होस्टिंग प्लेटफॉर्म पर संगीतकार का उपयोग नहीं कर सकता। – andrebruton

+6

[प्रत्येक रिलीज] में एक ज़िप और फ़ार शामिल है (https://github.com/aws/aws-sdk-php/releases) जिसमें संपूर्ण बंद निर्भरताएं शामिल हैं जैसे संगीतकार की आवश्यकता नहीं है। –

+1

एसडीके की रीडमे और उपयोगकर्ता दोनों मार्गदर्शिका [दिखाएं कि ज़िप कहां डाउनलोड करें] (http://docs.aws.amazon.com/aws-sdk-php/guide/latest/installation.html)।क्या आपके पास कुछ खास कारण है कि एसडीके केवल संगीतकार के साथ काम करता है? –

0

इस एक का प्रयोग करें एक प्रपत्र का उपयोग कर छवियों को अपलोड करने और यह मेरे लिए ठीक काम कर रहा है आप अपने कोड

$name = $_FILES['photo']['name']; 
$size = $_FILES['photo']['size']; 
$tmp = $_FILES['photo']['tmp_name']; 

//////Upload Process 


    // Bucket Name 
    $bucket = 'bucket-name'; 
    require_once('S3.php'); 

    //AWS access info 
    $awsAccessKey = 'awsAccessKey'; 
    $awsSecretKey = 'awsSecretKey'; 

    //instantiate the class 
    $s3 = new S3($awsAccessKey, $awsSecretKey); 

    $s3->putBucket($bucket, S3::ACL_PUBLIC_READ); 


    //Rename image name. 
    $actual_image_name = time(); 

     //Upload to S3 
    if($s3->putObjectFile($tmp, $bucket , $actual_image_name, S3::ACL_PUBLIC_READ)) 
    { 
     $image='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name; 
    }else{ 
     echo 'error uploading to S3 Amazon'; 
    } 
1

साथ इसे का उपयोग कोशिश कर सकते हैं मैं कभी नहीं एक अद्यतन स्क्रिप्ट Amazons नवीनतम SDK के साथ मिल गया। मैंने इसे अपने आप बना दिया है। यह एक php कमांडलाइन दुभाषिया स्क्रिप्ट के रूप में woks।

https://github.com/arizawan/aiss3clientphp

0

यहाँ अमेज़न S3 पर छवियों को अपलोड करने नमूना कोड है: इसे आजमाइए।

// Bucket Name 
$bucket="BucketName"; 
if (!class_exists('S3'))require_once('S3.php'); 

    //AWS access info 
    if (!defined('awsAccessKey')) define('awsAccessKey', 'ACCESS_KEY'); 
    if (!defined('awsSecretKey')) define('awsSecretKey', 'ACCESS_Secret_KEY'); 

    $s3 = new S3(awsAccessKey, awsSecretKey); 
    $s3->putBucket($bucket, S3::ACL_PUBLIC_READ); 
    if($s3->putObjectFile($tmp, $bucket , $image_name_actual,S3::ACL_PUBLIC_READ)) 
    { 
     $message = "S3 Upload Successful."; 
     $s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name; 
     echo "<img src='$s3file'/>"; 
     echo 'S3 File URL:'.$s3file; 
    } 
    else{ 
     $message = "S3 Upload Fail."; 
    } 
} 
4

आप संगीतकार आदेश के बाद चलाकर अमेज़न पीएचपी एसडीके का नवीनतम संस्करण डाउनलोड कर सकते हैं

composer require aws/aws-sdk-php 
अमेज़न S3 पर फ़ाइल अपलोड करने की

आगे विन्यास कदम से

// Include the SDK using the Composer autoloader 
require 'vendor/autoload.php'; 
use Aws\S3\S3Client; 
use Aws\S3\Exception\S3Exception; 

// Set Amazon s3 credentials 
$client = S3Client::factory(
    array(
    'key' => "your-key", 
    'secret' => "your secret key" 
) 
); 

try { 
    $client->putObject(array(
    'Bucket'=>'your-bucket-name', 
    'Key' => 'your-filepath-in-bucket', 
    'SourceFile' => 'source-filename-with-path', 
    'StorageClass' => 'REDUCED_REDUNDANCY' 
)); 

} catch (S3Exception $e) { 
    // Catch an S3 specific exception. 
    echo $e->getMessage(); 
} 

प्राप्त कदम का अनुसरण कर रहे यहां से Amazon S3 File Upload Using PHP