查看代码:
<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视图代码。在这里,我试图将多个图像上传到db。
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>
这是我给出的显示图像。
答案 0 :(得分:1)
如果您在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>
答案 1 :(得分:1)
首先,您要上传一个图像数组并返回一个变量,该变量仅返回上传的最后一个文件的名称。而是创建并返回上传文件的文件名数组。
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
以创建storage
目录中public
目录的符号链接。
<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>