Currently working on a platform that allows people send files to people's mail, on upload of the files, the file get stored in Amazon S3 bucket then retrieved to be sent to the email of the uploader. The issue I am having is anytime I tried to retrieve the file from Amazon S3 bucket, I get this error: "Swift10Exception: Unable to open file for reading".
Document Upload Controller
public function store(Request $request)
{
//
$this->validate($request,[
'recipient_email' => 'required',
'file' => 'required'
]);
$files = $request['file'];
$id = mt_rand();
if($files){
foreach($files as $file) {
$docName = $file->getClientOriginalName();
$originalName = pathinfo($docName,PATHINFO_FILENAME);
$extension = $file->getClientOriginalExtension();
$filename = mt_rand().'.'.$extension;
$filePath = 'documents/' . $id .'/'.$filename;
Storage::disk('s3')->put($filePath, file_get_contents($file), 'public');
$data[] = $originalName;
}
}
$name = implode(',' , $data);
$document = new Document();
$document->file = $name;
$document->title = $name;
$document->message = $request['message'];
$document->user_id = Auth::user()->id;
$document->transaction_id = $id;
$document->recipient_email = $request['recipient_email'];
$document->save();
$files = Storage::disk('s3')->files('documents/'. $id);
$sender = Auth::user()->email;
$message = $request['message'];
Mail::to($request['recipient_email'])->send(new SentFiles($files, $sender, $message));
return redirect('/dashboard')->with('success', 'Document Sent and Saved Successfully!');
}
App\Mail\SentFiles.php
public $attachment;
public $sender;
public $content;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($attachment, $sender, $content)
{
//
$this->attachment = $attachment;
$this->sender = $sender;
$this->content = $content;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$email = $this->view('emails.attached')
->from($this->sender);
foreach ($this->attachment as $item) {
$email->attach($item);
}
return $email;
}
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire