2015-09-03 15 views
5

पर अपलोड होने के बाद स्थानीय फ़ाइल को हटाने में असमर्थ मैं एडब्ल्यूएस एस 3 पर अपलोड करने के ठीक बाद स्थानीय निर्देशिका से एक फाइल को हटाने की कोशिश कर रहा हूं। जब मैं इसे वग्रेंट पर चलाता हूं तो मुझे एक त्रुटि = टेक्स्ट-फ़ाइल मिलती है: व्यस्त, और जब मैं इसे xampp पर चलाता हूं तो मुझे त्रुटि मिलती है: अनुमति अस्वीकार कर दी गई है। किसी कारण से एडब्ल्यूएस एस 3 PutObject विधि फ़ाइल हैंडल जारी नहीं कर रहा है। मैंने s3 ऑब्जेक्ट को अनसेट करने का प्रयास किया है लेकिन यह काम नहीं करता है।लैरवेल और एडब्ल्यूएस PHP एसडीके - एस 3

यहाँ कोड है:

$tempName = public_path().'/path/to/file' 

    //Initialize AWS 
    $s3 = AWS::createClient('s3'); 


    //Upload image to AWS 

    try { 
     $reponse = $s3->putObject(array(
      'Bucket'  => 'zotamoda', 
      'Key'   => $productImage->image_folder."/".$productImage->image_name, 
      'SourceFile' => $tempName, 
      'ACL'   => 'public-read', 
     )); 
    } catch (S3Exception $e) { 
     // The AWS error code (e.g.,) 
     echo $e->getAwsErrorCode() . "\n"; 
     // The bucket couldn't be created 
     echo $e->getMessage() . "\n"; 
    } 


    //Delete image from temporary location 
    unlink($tempName); 
+0

यह बहुत ओएस निर्भर है , PHP पर व्यवहार पर थोड़ा नियंत्रण है। भले ही आप इसे अपने विकास बॉक्स में काम करते हैं, इसका मतलब यह नहीं है कि जब आप तैनात करेंगे तो यह काम करेगा। आप समय-समय पर उन्हें हटाने के लिए temp फ़ाइल का उपयोग करने या क्रॉन नौकरी का उपयोग करने के लिए बेहतर लग रहे हैं। – wayne

उत्तर

2

आप की कोशिश कर सकते:

Storage::disk('s3')->put($productImage->image_folder."/".$productImage->image_name, file_get_contents($tempName), 'public'); 
unlink($tempName); 

या, यह सोचते हैं कि $tempName अपनी परियोजना जड़ के सापेक्ष है:

Storage::disk('local')->delete($tempName) 
+0

पूरी तरह से काम किया। धन्यवाद। –

संबंधित मुद्दे