J'essaie de télécharger une image avec mon formulaire dans mon projet code> Laravel code>. J'ai une image Cropper qui enregistre l'image comme Le Cropper envoie un J'utilise l'intervention de l'image code> pour le processus de téléchargement p> fonction du contrôleur p> View p> Data: image / jpeg; base64, / 9j / 4aaqskzjrgabaqaaaqabaad /..ke/ code>
json code> chaîne qui contient un
base64 code> codé de la chaîne de fichier, j'ai besoin d'analyser la chaîne code> json code> à un objet, puis d'extraire la chaîne
base64 code> et tournez-la dans un Objet de fichier. p>
<form class="form-horizontal" action="{{route('posts.store')}}" method="POST" enctype="multipart/form-data">{{ csrf_field() }}
<fieldset class="form-group">
<label for="featimage">Upload Image</label>
<input type="file" class="form-control slim" data-ratio="4:3" name="featimage">
<label class="col-md-2 col-form-label">Post Body</label>
<textarea type="textarea" class="form-control" rows="10" name="body"></textarea>
</fieldset>
<button class="btn btn-primary btn-block" name="submit">Save</button>
<button class="btn btn-danger btn-block" name="submit">Cancel</button>
</form>
3 Réponses :
Essayez cet espoir que cela fonctionnera pour vous.
Avez-vous envoyé votre image comme une chaîne de base64 au contrôleur?
Lorsque je récolte mon image, il génère une chaîne de base64, donc j'ai besoin de le décoder et de le télécharger sur le serveur.
OK Si vous attribuez votre chaîne de base64 à la variable "$ FORETIMAGE" sur le code ci-dessus, cela fonctionnera certainement que j'ai testé à ma fin.
Dois-je écrire JavaScript pour y parvenir? Pourriez-vous me montrer un exemple
Pas besoin d'utiliser JavaScript. Essayez simplement d'assigner "Data: image / jpeg; base64, / 9j / 4aaqskzjrgabaqaaaqabaad /." String to $ $TImage; et changez votre chemin de téléchargement. Je mentionne clairement le commentaire dans le code.
J'ai couru votre code dans mon programme et j'ai eu beaucoup d'erreur. Si vous essayez de donner une entrée en tant que chaîne codée de base64 en tant que 'Data: image / jpeg; base64, / 9j / 4aaqskzjrgabaqaaaqabaad /..' et convertissez-le en fichier image puis utilisez le code ci-dessous:
$post = new Post;
$post->title = $request->title;
$post->body = $request->body;
$post->user_id = auth()->id();
if ($request->hasFile('featimage')) {
$image = $request->file('featimage');
$extension = $image->getCLientOriginalExtension(); //gives extension of image
$filename = time() . '.' . $extension; //gives filename
$location = public_path('images/uploads/' . $filename); //sets path
$image = Image::make($image)->save($location); //makes image and saves it to that location
$base64 = 'data:image/' . $extension . ';base64,' . base64_encode($image); //changes image to base64 image
$post->image = $filename;
}
$post->save();
Bonjour cela n'a pas travaillé pour moi merci pour votre aide
Avez-vous installé un package d'intervention de l'image? Faites également des images / téléchargements. Ensuite, cela fonctionnera Béacuse, cela fonctionne bien dans mon code. Et je faisais aussi avoir ce problème une fois que je l'ai résolu en utilisant le même code. Merci pour votre réponse cependant.
Oui, j'ai le forfait d'intervention d'image, je peux télécharger une image via une entrée de téléchargement standard sans problème.
Sa ne pas détecter la balise "FOOTIMAGE", je pense que je pourrais avoir besoin de JS pour obtenir ce travail
Si vous utilisez base64, alors n'utilisez pas $ Demande-> HASFILE ('FOOTIMAGE') car base64 n'est pas un fichier simplement utiliser $ Demande-> FOOTIMAGE
Vous pouvez essayer cette fonction.
function uploadImage($base_64_string,$image_name) { preg_match("/^data:image\/(.*);base64/i", $base_64_string, $match); $extension_array = explode('/', (explode(';', $base_64_string))[0]); $extension = end($extension_array); $img = $base_64_string; if ($extension == 'png' || $extension == 'jpg' || $extension == 'jpeg'){ $img = str_replace('data:image/' . $extension . ';base64,', '', $img);} elseif ($extension == 'mp4' || $extension == 'mov'){ $img = str_replace('data:video/' . $extension . ';base64,', '', $img); } $img = str_replace(' ', '+', $img); $data = base64_decode($img); $fileNameI = $image_name.'_'.rand().time() . '.' . $extension; //Uploading Image To S3 Bucket $s3 = Storage::disk('s3-image'); $filePath = Config::get('common.Image_Folder') . $fileNameI; $s3->put($filePath, $data, 'public'); return $fileNameI; }
Souhaitez-vous télécharger l'image de base64 sur votre serveur?
Oui, je voudrais le télécharger dans mon dossier public / images / téléchargements et enregistrer le nom de fichier dans ma db
Veuillez vous fournir un lien vers la bibliothèque de Cropper que vous utilisez ainsi que le JavaScript que vous devez initialiser? Aussi, est
$ Demande-> HASFILE ('FOOTIMAGE') CODE> définitivement B> Evaluation à
True code> ??