博客列表 >20200126-laravel图片上传及显示-***线上九期班

20200126-laravel图片上传及显示-***线上九期班

邯郸易住宋至刚
邯郸易住宋至刚原创
2020年01月26日 23:44:25774浏览

图片上传及显示

一、图片上传

1、图片上传代码

  1. <div class="row cl">
  2. <label class="form-label col-xs-4 col-sm-2">缩略图:</label>
  3. <form target="img" id="upload_img" enctype="multipart/form-data" method="post" action="/admins/content/upload">
  4. @csrf
  5. <input type="file" name="up" id="up" onchange="upload(this)">
  6. </form>
  7. <img src="" id="pre_img" alt="" style="width: 200px;height: 150px;">
  8. <iframe name="img" frameborder="0" style="display: none"></iframe>
  9. <script>
  10. function aaa(src){
  11. $('#pre_img').attr('src',src);
  12. }
  13. </script>
  14. </div>

2、需要注意的问题

(1)form表单中特殊属性

enctype=”multipart/form-data”,这个属性是一定要有的,另外常见的属性method、action也不能少;

(2)提交时注意iframe内联框架的使用

由于是部分提交,并不是整个文章内容的提交,所以在提交图片的时候不能让页面跳走,所以要使用iframe,这样,form中必须有target属性,其值跟iframe中name属性值必须一致;

(3)iframe不能显示

需要定义其样式style:display:none;

二、服务器端接收及存储

1、接收及存储代码

  1. public function upload(Request $request)
  2. {
  3. $path = $request->file('up')->store('public/'.date('Y/m'));
  4. $url = Storage::url($path);
  5. $str = '<script>parent.window.aaa("'.$url.'");</script>';
  6. return $str;
  7. }

2、注意的问题

(1)file()中的参数

这个参数跟前端input框中的name属性值是相同的;

(2)store()中参数就是存储的路径

这是可以自定义的,但是考虑到使用artisan命令来创建快捷方式的默认路径,所以参数中的这个路径最好是以“public/”开头,当然也可以自定义;

(3)服务器端返回的值

这个值是返回给了iframe,而iframe中并没有引用jquery等,所以只能在iframe外边定义js方法,然后在服务器端来调用( $str = ‘<script>parent.window.aaa(“‘.$url.’”);</script>‘;);
前端定义方法,给src赋值
<script>
function aaa(src){
$(‘#pre_img’).attr(‘src’,src);
}
</script>
这样,上传的图片就可以显示出来了。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议