#laravel #laravel-mail
#laravel #laravel-почта
Вопрос:
Я пытаюсь отправить письмо нескольким получателям с вложением URL-адреса файла, но при нажатии на api в postman выдает ошибку невозможно открыть файл для чтения [ссылка на файл] , но пока я копирую ссылку на файл и открываю в браузере, он открывается отлично.
Я также проверил разрешение файла и сослался на некоторые ответы на Stackoverflow, но мне ничего не помогло, пожалуйста, помогите мне как можно скорее.
$file_name = 'TimeActivityReport' . "_" . time() . '.pdf';
$storage_path = 'public/TimeActivityReport';
// $storage_path = public_path();
$filePath = $storage_path . '/' . $file_name;
// return $filePath;
$exl = Excel::store(new TimeActivityReportExport($all_total_values,$data,$date_totals), $filePath);
if($exl)
{
$fileurl = asset('storage/TimeActivityReport').'/'.$file_name;
// return $fileurl;
}
// return $fileurl;
return Mail::send([], $emails, function($message)use($fileurl,$emails) {
$message->to($emails,'hello')
->subject('test')
->attach($fileurl,[
'as' => 'checkname.pdf',
'mime' => 'application/pdf'
])
->setBody('check');
});
Комментарии:
1. попробуйте dd( file_exists(asset(‘storage / TimeActivityReport/YOUR_FILE_NAME’))); и посмотрите, что вы получите?
2. отображается false, но файл существует внутри ‘storage / app / public / TimeActivityReport / file_name’
3. Попробуйте изменить этот ресурс (‘storage / TimeActivityReport’) на ресурс (‘TimeActivityReport /’.$имя_файла) и dd() его снова. проблема с вашим URL-адресом, также что вы получите, если вы dd(asset(‘TimeActivityReport /’.$file_name));
4. снова отображается false
5. assets выдает вам URL
http
-адрес, вам нужно указать системный каталог.
Ответ №1:
Попробуйте это, я проверил это на своем конце, и он вернул файл
Storage::get('./public/TimeActivityReport/'.$file_name);
Вы также можете проверить, существует ли файл с помощью:
Storage::disk('local')->exists('public/TimeActivityReport/'.$file_name);
Чтобы прикрепить, попробуйте:
$fileurl = Storage::path('public/TimeActivityReport/'.$file_name);
ресурс laravel docs
Комментарии:
1. я попробовал это, и он возвращает файл, но запрос заключается в том, что при прикреплении URL-адреса файла к методу attach () во время отправки почты отображается ошибка, из-за которой невозможно открыть файл для чтения
2. самая большая разница в том, что я заменил ‘storage /’ на ‘public /’
3. Большое вам спасибо, наконец-то $fileurl = Storage::path(‘public/ TimeActivityReport/’.$file_name); это сработало для меня еще раз спасибо
4. Это приятно, просто не забудьте отметить как ответ, если это был ответ @kishanmaharana