Reputation: 1
I host a laravel project/app in Infinity free. My web application contains a file uploading but when I try to upload in a live server it doesnt work. Here is the code for managing upload:
public function submitItem(Request $request)
{
// dd($request->file('item_image'));
DB::beginTransaction();
try {
$item = new Item();
$item->item_name = $request->item_name;
$item->item_qty = $request->item_quantity;
$item->single_price = $request->single_price;
$item->bundle_price = $request->bundle_price;
$item->processor_id = $request->processor;
$item->category_id = $request->category;
$item->description = $request->description == null ? "" : $request->description;
if($request->hasFile('item_image')){
// $path = $request->file('item_image')->store('images');
// $item->image_url = $path;
// $file = $request->file('item_image')->getRealPath();
// $image = file_get_contents($file);
// $base64 = base64_encode($image);
// $item->image_url = $base64;
$uploadedFile = $request->file('item_image');
$extension = $uploadedFile->getMimeType();
$filename = pathinfo($uploadedFile->getClientOriginalName(), PATHINFO_FILENAME);
// Ensure the filename is unique to avoid overwriting existing files
$filename = $filename . '_' . time();
Storage::disk('public')->put('items/'.$filename.'.'.$extension, $uploadedFile);
$item->image_url = $filename;
}
$item->save();
DB::commit();
Alert::success('Success', 'Item Added!');
return redirect()->route('Items: ')->with('message', 'Item Added!');
// return back();
} catch (Exception $e) {
// echo $e;
DB::rollBack();
echo $e;
// return redirect('/error');
}
// return $item;
}
when I try to die and dump in localhost is should appear like this which is ok:
Illuminate\Http\UploadedFile {#362 ▼ // app\Http\Controllers\ItemController.php:92 -test: false -originalName: "Galax RTX 4060 1-Click OC 2X 8GB GDDR6.jpg" -mimeType: "image/jpeg" -error: 0 #hashName: null path: "C:\Users\marjon\AppData\Local\Temp" filename: "php3DD8.tmp" basename: "php3DD8.tmp" pathname: "C:\Users\marjon\AppData\Local\Temp\php3DD8.tmp" extension: "tmp" realPath: "C:\Users\marjon\AppData\Local\Temp\php3DD8.tmp" aTime: 2023-11-23 09:47:59 mTime: 2023-11-23 09:47:59 cTime: 2023-11-23 09:47:59 inode: 17169973579535044 size: 16874 perms: 0100666 owner: 0 group: 0 type: "file" writable: true readable: true executable: false file: true dir: false link: false linkTarget: "C:\Users\marjon\AppData\Local\Temp\php3DD8.tmp" }
however this is in the live server:
Illuminate\Http\UploadedFile {#362 ▼ // app/Http/Controllers/ItemController.php:93 -test: false -originalName: "GALAX GeForce RTX™ 4070 EX Gamer 1-Click OC 12GB GDDR6X 192-bit (PINK).jfif" -mimeType: "application/octet-stream" -error: 6 #hashName: null path: "" filename: "" basename: "" pathname: "" extension: "" realPath: "/home/vol2_8/infinityfree.com/if0_35473659/htdocs" aTime: 1970-01-01 00:00:00 mTime: 1970-01-01 00:00:00 cTime: 1970-01-01 00:00:00 inode: false size: false perms: 00 owner: false group: false type: false writable: false readable: false executable: false file: false dir: false link: false }
I try to changed some functions but it doesn't work. I try to move the code outside the if condition but error 500 status appeared.
Upvotes: 0
Views: 141
Reputation: 46
The getMimeType
method guesses the mime type based on the uploaded file content not by the file extension For Security Reasons which is the best way.
However, if you want to use the file extension instead you can use getClientMimeType
method.
I recommend reading the method's documentation for more understanding.
Upvotes: 1