/**
* Saves a new image from an upload.
* @param UploadedFile $uploadedFile
- * @param string $type
+ * @param string $type
+ * @param int $uploadedTo
* @return mixed
+ * @throws ImageUploadException
*/
- public function saveNewFromUpload(UploadedFile $uploadedFile, $type)
+ public function saveNewFromUpload(UploadedFile $uploadedFile, $type, $uploadedTo = 0)
{
$imageName = $uploadedFile->getClientOriginalName();
$imageData = file_get_contents($uploadedFile->getRealPath());
- return $this->saveNew($imageName, $imageData, $type);
+ return $this->saveNew($imageName, $imageData, $type, $uploadedTo);
}
* @param string $imageName
* @param string $imageData
* @param string $type
+ * @param int $uploadedTo
* @return Image
* @throws ImageUploadException
*/
- private function saveNew($imageName, $imageData, $type)
+ private function saveNew($imageName, $imageData, $type, $uploadedTo = 0)
{
$storage = $this->getStorage();
$secureUploads = setting('app-secure-images');
try {
$storage->put($fullPath, $imageData);
+ $storage->setVisibility($fullPath, 'public');
} catch (Exception $e) {
throw new ImageUploadException('Image Path ' . $fullPath . ' is not writable by the server.');
}
'name' => $imageName,
'path' => $fullPath,
'url' => $this->getPublicUrl($fullPath),
- 'type' => $type
+ 'type' => $type,
+ 'uploaded_to' => $uploadedTo
];
if (auth()->user() && auth()->user()->id !== 0) {
$thumbData = (string)$thumb->encode();
$storage->put($thumbFilePath, $thumbData);
+ $storage->setVisibility($thumbFilePath, 'public');
$this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 72);
return $this->getPublicUrl($thumbFilePath);
$storageUrl = config('filesystems.url');
// Get the standard public s3 url if s3 is set as storage type
+ // Uses the nice, short URL if bucket name has no periods in otherwise the longer
+ // region-based url will be used to prevent http issues.
if ($storageUrl == false && config('filesystems.default') === 's3') {
$storageDetails = config('filesystems.disks.s3');
- $storageUrl = 'https://s3-' . $storageDetails['region'] . '.amazonaws.com/' . $storageDetails['bucket'];
+ if (strpos($storageDetails['bucket'], '.') === false) {
+ $storageUrl = 'https://' . $storageDetails['bucket'] . '.s3.amazonaws.com';
+ } else {
+ $storageUrl = 'https://s3-' . $storageDetails['region'] . '.amazonaws.com/' . $storageDetails['bucket'];
+ }
}
$this->storageUrl = $storageUrl;
}
- return ($this->storageUrl == false ? '' : rtrim($this->storageUrl, '/')) . $filePath;
+ return ($this->storageUrl == false ? rtrim(baseUrl(''), '/') : rtrim($this->storageUrl, '/')) . $filePath;
}
-}
\ No newline at end of file
+}