如何在laravel中使用ajax请求return插入的图片?
How to return the inserted image using ajax request in laravel?
查看代码:
<form enctype="multipart/form-data" name="imagesform" id="imagesform"
action="{{url('upload')}}" method="post" >
{{ csrf_field() }}
<input name="images[]" type="file" multiple>
<button type="submit" class="save" id="saveImage" style="border-
radius: 8px; padding: 5px 15px;">SAVE</button>
</form>
这是laravel查看代码。在这里,我尝试将多张图片上传到数据库中。
AJAX 代码:
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
**$("#insertedImages").html(data);**
alert("Uploaded OK!")
},
});
return false;
});
});
</script>
这是我的 ajax 存储图像的请求。另外,我正在尝试显示那些添加的图像(在块中标记)。
控制器代码:
public function uploadSubmit(UploadRequest $request)
{
$product = Product::create($request->all());
foreach ($request->images as $photo) {
$filename = $photo->store('uploadedImages');
$filename=substr($filename,15);
ProductsPhoto::create([
'product_id' => $product->id,
'filename' => $filename
]);
}
return $filename;
}
这是我的控制器,用于插入这些图像数组并返回相同的图像。但是,它只显示图像的名称。 即,eZrcSTlkCeGez8Dq6pTW5X1yLUA080W5UamQEfXk.png..我不想这样显示,而是想显示图像。
图片显示:
<div id="insertedImages"></div>
这是我给的显示图片。
如果您在 ajax 中得到 image_name,您可以将它与完整的图像路径连接起来
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
var img = '<img src="{{asset(Storage::url('uploadedImages'))}}/'+data+'" width="100" height="100" id="insertedImages">';
$("#insertedImages").html(img);
alert("Uploaded OK!")
},
});
return false;
});
});
</script>
首先,您要上传一组图像并 returning 一个变量,该变量仅 return 是上次上传文件的名称。而是创建和 return 上传文件的文件名数组。
public function uploadSubmit(UploadRequest $request)
{
$product = Product::create($request->all());
$filenames = array();
foreach ($request->images as $photo) {
$filename = $photo->store('uploadedImages');
$filename = substr($filename,15);
$filenames[] = asset('storage/app/uploadedImages/'.$filename);
ProductsPhoto::create([
'product_id' => $product->id,
'filename' => $filename
]);
}
return response()->json($filenames);
}
然后确保 运行 php artisan storage:link
在 public
目录中创建 storage
目录的符号链接。
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
$.each(data, function( index, value ) {
$("#insertedImages").append('<img src="'+value+'">');
});
},
});
return false;
});
});
</script>
查看代码:
<form enctype="multipart/form-data" name="imagesform" id="imagesform"
action="{{url('upload')}}" method="post" >
{{ csrf_field() }}
<input name="images[]" type="file" multiple>
<button type="submit" class="save" id="saveImage" style="border-
radius: 8px; padding: 5px 15px;">SAVE</button>
</form>
这是laravel查看代码。在这里,我尝试将多张图片上传到数据库中。
AJAX 代码:
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
**$("#insertedImages").html(data);**
alert("Uploaded OK!")
},
});
return false;
});
});
</script>
这是我的 ajax 存储图像的请求。另外,我正在尝试显示那些添加的图像(在块中标记)。
控制器代码:
public function uploadSubmit(UploadRequest $request)
{
$product = Product::create($request->all());
foreach ($request->images as $photo) {
$filename = $photo->store('uploadedImages');
$filename=substr($filename,15);
ProductsPhoto::create([
'product_id' => $product->id,
'filename' => $filename
]);
}
return $filename;
}
这是我的控制器,用于插入这些图像数组并返回相同的图像。但是,它只显示图像的名称。 即,eZrcSTlkCeGez8Dq6pTW5X1yLUA080W5UamQEfXk.png..我不想这样显示,而是想显示图像。
图片显示:
<div id="insertedImages"></div>
这是我给的显示图片。
如果您在 ajax 中得到 image_name,您可以将它与完整的图像路径连接起来
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
var img = '<img src="{{asset(Storage::url('uploadedImages'))}}/'+data+'" width="100" height="100" id="insertedImages">';
$("#insertedImages").html(img);
alert("Uploaded OK!")
},
});
return false;
});
});
</script>
首先,您要上传一组图像并 returning 一个变量,该变量仅 return 是上次上传文件的名称。而是创建和 return 上传文件的文件名数组。
public function uploadSubmit(UploadRequest $request)
{
$product = Product::create($request->all());
$filenames = array();
foreach ($request->images as $photo) {
$filename = $photo->store('uploadedImages');
$filename = substr($filename,15);
$filenames[] = asset('storage/app/uploadedImages/'.$filename);
ProductsPhoto::create([
'product_id' => $product->id,
'filename' => $filename
]);
}
return response()->json($filenames);
}
然后确保 运行 php artisan storage:link
在 public
目录中创建 storage
目录的符号链接。
<script type="text/javascript">
$(document).ready(function(){
$("#imagesform").submit(function(){
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN':
$('meta[name="_token"]').attr('content') }
});
$.ajax({
url :"{{url('upload')}}",
type: 'POST',
data:new FormData($("#imagesform").get(0)),
contentType:false,
processData:false,
success: function (data) {
$.each(data, function( index, value ) {
$("#insertedImages").append('<img src="'+value+'">');
});
},
});
return false;
});
});
</script>