我有一个添加酒店的表单我想为AnyHotel选择图像我使用Ajax保存图像目录但是我无法在public\images
目录中上传图像,我的代码在这里
在刀片中:
<div class="form-group has-feedback has-feedback-left">
<input type="file" id="image">
</div>
<button type="submit"data-dismiss="modal"
id="AddHotel">Add hotel</button>
<script>
$('#AddHotel').click(function (event) {
var image = $('#image').val();
var city = $('#city').val();
$.post('/Add/Hotel', {
'image' : image,
'_token': $('input[name=_token]').val()
},
function (data) {
console.log(data);
window.location.reload();
});
});
</script>
在Controller中保存图像目录我正在使用此代码:
public function Store(request $request)
{
$hotel->image = $request->image;
$hotel->save();
return $request->all();
}
我的问题在这里当我从DB图像打印此图像时应该在公共目录中,如何在目录中上传图像?
答案 0 :(得分:0)
Laravel默认将文件存储在存储目录中。您可以按照此处所述创建符号链接https://laravel.com/docs/5.6/filesystem#the-public-disk,或在文件系统配置文件中创建另一个磁盘。
前者可能是你更好的选择。
答案 1 :(得分:0)
您可以使用laravel helper函数直接指定:
示例:
$currentUser = \Auth::user();
$save_path = storage_path().'/users/id/'.$currentUser->id.'/uploads/images/hotel/';
然后,要检索图像,您可以制作如下方法:
public function userHotelImages($id, $image)
{
return Image::make(storage_path().'/users/id/'.$id.'/uploads/images/hotel/'.$image)->response();
}
并调用该方法并在web.php
// Route to show user avatar
Route::get('/user/{id}/images/hotel/{image}', [
'uses' => 'YourControllerFileName@userHotelImages',
]);
但要根据自己的喜好调整所有路线和路径。
以下是对我使用的这种方法的一些参考,我将上述示例放在一起:
https://github.com/jeremykenedy/laravel-auth/blob/master/routes/web.php#L91
答案 2 :(得分:0)
<form method="post" enctype="multipart/form-data">
<div class="form-group has-feedback has-feedback-left">
<input type="file" id="image" name="image">
</div>
<button type="submit" id="AddHotel">Add hotel</button>
</form>
// saving to db
$image = $request->file('image');
$hotel->image = $image->getClientOriginalName();
$hotel->save();
// this will upload your image to public/images directory
\File::move($_FILES['image']['tmp_name'], public_path('images/'.$image ));
return response()->json(['status' => 'true']);
您无法以现在发送的方式从ajax发送图像。提交如下数据。
$('#AddHotel').click(function (event) {
var your_data= new FormData();
var city = $('#city').val();
your_data.append('city',city);
your_data.append('_token',$('input[name=_token]').val());
$.ajax({
type: "POST",
url:"/Add/Hotel",
data:your_data,
success: function(data){
console.log(data);
}
});
通常这样做。但您可以使用称为干预的包进行各种操作,如调整大小。你可以在这里找到http://image.intervention.io/