2016-06-27 15 views
9

मेरा एप्लिकेशन छवियों को s3 पर अपलोड करता है। मैं छवि के रंग प्राप्त करने के लिए फ्रंट एंड रेंडरिंग का उपयोग करता हूं, लेकिन क्योंकि s3 पर अपलोड करने से गुणवत्ता कम हो जाती है (jpeg'ish), मुझे वांछित रंग मिलते हैं।लार्वा गुणवत्ता से S3 पर अपलोड करना

enter image description here

$s3 = \Storage::disk('s3'); 
$s3->put('/images/file.jpg', '/images/file.jpg', 'public'); 

इस गुणवत्ता के नुकसान को रोकने के लिए रास्ता है? मैंने देखा कि अगर मैं सीधे कंसोल कंसोल वेबसाइट का उपयोग कर फ़ाइल अपलोड करता हूं, तो गुणवत्ता वही रहता है जो आदर्श है।

धन्यवाद!

+0

आपने इस स्पष्ट गुणवत्ता हानि का परीक्षण/सत्यापन कैसे किया? जहां तक ​​मैं समझता हूं, फाइलों में डिफ़ॉल्ट रूप से यह गुणवत्ता हानि नहीं होगी। – alariva

+8

एस 3 में कोई तंत्र नहीं है जो अपलोड किए गए ऑब्जेक्ट के किसी भी तरह से पेलोड को बदल देगा। जो कुछ भी हो रहा है वह केवल एस 3 के बाहर हो सकता है। –

+3

लैरवेल की 'पुट' यह भी नहीं करेगी। कुछ और चल रहा है। – ceejayoz

उत्तर

4

नियंत्रक कार्रवाई

public function uploadFileToS3(Request $request) 
{ 
    $image = $request->file('image'); 
} 

अगला हम अपलोड file.You करने के लिए एक फ़ाइल नाम आवंटित करने के लिए मूल फ़ाइल नाम के रूप में इस छोड़ सकता की जरूरत है, लेकिन ज्यादातर मामलों में आप के लिए इसे बदलना चाहते होगा चीजों को सुसंगत रखें। आइए इसे एक टाइमस्टैम्प में बदलें, और फ़ाइल एक्सटेंशन को इसमें संलग्न करें।

$imageFileName = time() . '.' . $image->getClientOriginalExtension(); 

अब छवि सामग्री के रूप में अधिक जानकारी के लिए

$s3 = \Storage::disk('s3'); 
$filePath = '/images/file.jpg' . $imageFileName; 
$s3->put($filePath, file_get_contents($image), 'public'); 

इस प्रकार आप उल्लेख कर सकते हैं this

1

मैं Laravel से परिचित नहीं हूँ, लेकिन मैं एडब्ल्यूएस S3 से परिचित हूँ, और मैं कर रहा हूँ मिल aws-sdk-php का उपयोग कर।
जहां तक ​​मुझे पता है, न तो एडब्ल्यूएस एस 3 और न ही php-sdk हुड के नीचे कुछ नहीं करता है। इसलिए यह आपके प्रोजेक्ट में कहीं और गलत हो रहा है।

$s3 = S3Client::factory([ 
    'region'  => 'us-west-2', 
    'credentials' => $credentials, 
    'version'  => 'latest', 
]); 
$s3->putObject([ 
    'Bucket'  => 'myBucket', 
    'Key'  => 'test/img.jpg', 
    'SourceFile' => '/tmp/img.jpg', 
]); 

यह पूरी तरह से काम करता है:
आप सादे एडब्ल्यूएस-sdk-php का उपयोग कर सकते हैं।

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