I have a form in which when a user fills the form and submits, the data is gone to the database and my mail id, below is my controller
namespace App\Http\Controllers;
use App\Mail\SendEmail;
use App\Register;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Mail;
use Session;
use Storage;
class RegController extends Controller
{
public function store(Request $request)
{
$data = new Register;
$data->firstname = $request->firstname;
$data->lastname = $request->lastname;
$data->mobilenumber = $request->mobilenumber;
$data->experience = $request->experience;
$data->designation = $request->designation;
$data->confirmation = $request->confirmation;
$data->company = $request->company;
$data->address = $request->address;
$data->addressline2 = $request->addressline2;
$data->city = $request->city;
$data->state = $request->state;
$data->pin = $request->pin;
$data->country = $request->country;
$data->Whatsapp = $request->Whatsapp;
$data->alternatenumber = $request->alternatenumber;
$data->Email = $request->Email;
$data->CompanyRegNumber = $request->CompanyRegNumber;
$data->Date_Incorporation_orBusi_Stp = $request->Date_Incorporation_orBusi_Stp;
$data->GSTIN = $request->GSTIN;
$data->Services_Offered = $request->Services_Offered;
$data->Annual_Turnover = $request->Annual_Turnover;
$data->Declaration = $request->Declaration;
$data->Fee = $request->Fee;
$data->termsandconditions = $request->termsandconditions;
$data->Mode_of_Payment = $request->Mode_of_Payment;
$data->Recommended_by_A = $request->Recommended_by_A;
$data->Recommended_by_B = $request->Recommended_by_B;
if ($request->hasFile('Photo')) {
$image = $request->file('Photo');
$filename = time().$image->getClientOriginalName();
$destinationPath = public_path('uploads/Photo');
Storage::disk('public')->put($filename, File::get($image));
$data->Photo = $filename;
}
if ($request->hasFile('Receipt')) {
$image = $request->file('Receipt');
$filename = time().$image->getClientOriginalName();
$destinationPath = public_path('uploads/Receipt');
Storage::disk('public')->put($filename, File::get($image));
$data->Receipt = $filename;
}
if ($request->hasFile('Signature')) {
$image = $request->file('Signature');
$filename = time().$image->getClientOriginalName();
$destinationPath = public_path('uploads/Signature');
Storage::disk('public')->put($filename, File::get($image));
$data->Signature = $filename;
}
$data->save();
Session::flash('registered', 'reg');
$name = $request->firstname." ".$request->lastname;
$subject = "TEIA";
$message = $data->id;
$photo = $data->Photo;
$sign = $data->Signature;
$recipt = $data->Receipt;
$email = 'teiamembers@gmail.com';
// ->cc(['name1@domain.com','name2@domain.com'])
Mail::to($email)->send(new SendEmail($subject, $message, $photo, $sign, $recipt));
return redirect('formdata');
}
}
my database fields
I have done the following code to display the values in PHP
<?php
$servername = "moluguz.accountsupportmysql.com";
$username = "teia";
$password = "bolsterking";
$dbname = "teia";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * from registers ORDER BY ID DESC limit 1 ";
$result = $conn->query($sql);
if (!empty($result) && $result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
in the email I am getting all the data including the image..but in the HTML website when I am trying to display the values, all the data except the image is being displayed, and when I am checking the uploads folder, no images are being stored . can anyone tell me what is wrong with my code...?
</div>
Your image is not visible because, In your database you are storing only filename of image.
To upload image try below:
you can configure your file upload path in 'config/filesystem.php' file.
In your code you are using 'public' disk so in your filesystem.php file make below change:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
]
you can upload file with below code:
$image = $request->file('photo');
$filename = time().$image->getClientOriginalName();
Storage::disk('public')->put('uploads/Photo/'.$filename, $image);
This upload your file in 'Storage/app/public/uploads/Photo' folder.
To access file from storage folder you need to create symbolic link in public folder. you can create it with command: 'php artisan storage:link'
You can check laravel documentation here
I hope it will help.