hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

layui+jfinal完成上传的要领_WEB前端开发

2019-12-06后端开发ki4网19°c
A+ A-

layui + jfinal 完成上传下载:(引荐:layui运用教程)

1、须要把jfinal的环境设置好

2、导入相干的库文件

layui的库文件

就是这两个文件须要导入到本身的页面

JFinal 是基于Java 言语的极速 web 开发框架,其中心设想目的是开发敏捷、代码量少、进修简朴、功能强大、轻量级、易扩大、Restful。在具有Java言语一切上风的同时再具有ruby、python等动态言语的开发效力。

注重:jfinal总会把途径阻拦,所以须要静态文件处置惩罚。本人不太懂。就网上找了下,说webRoot就是根目录,所以引入的时刻,肯定要在途径最入手下手加上 “/”

作为根目录途径。

3、接下来就是前端和背景的编写了。

前端能够直接从layui的官网上检察相干文档,就是复制粘贴,改改就能够了

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>upload模块疾速运用</title>
  <link rel="stylesheet" href="/assets/layui/css/layui.css" media="all">
</head>
<body>

 <div class="layui-upload">
  <button type="button" class="layui-btn" id="test1"><i class="layui-icon">&#xe67c;</i>上传图片</button>
  <div class="layui-upload-list">
    <img class="layui-upload-img" id="demo1">
    <p id="demoText"></p>
    <p id="yudu"></p>
    
  </div>
</div>
<p id="download"></p>
<script src="/assets/layui/layui.js"></script>

<script>

layui.use('upload', function(){
  var $ = layui.jquery
  ,upload = layui.upload;
  
  //一般图片上传
  var uploadInst = upload.render({
    elem: '#test1'
    ,url: '/hello/handleUpload'
    ,before: function(obj){
      //预读当地文件示例,不支持ie8
      obj.preview(function(index, file, result){
        $('#demo1').attr('src', result); //图片链接(base64)
        console.log(index); //获得文件索引
        console.log(file); //获得文件对象
        //console.log(result); //获得文件base64编码,比方图片
        $("#yudu").html("<span>名字:"+file.name+"</span>"+"<span>大小:"+file.size+"</span>");
      });
    }
    ,done: function(res){
        //alert(res.code);
      //假如上传失利
      if(res.code > 0){
        return layer.msg('上传失利');
      }
      //上传胜利
      layer.msg("上传胜利");
      console.log(res.msg);
      $("#download").html("<a class='layui-btn layui-btn-small' href='/hello/download?name="+res.msg+"'>下载</a>");
    }
    ,error: function(){
      //演示失利状况,并完成重传
      var demoText = $('#demoText');
      demoText.html('<span style="color: #FF5722;">上传失利</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
      demoText.find('.demo-reload').on('click', function(){
        uploadInst.upload();
      });
    }
  });
  
});
</script>
</body>
</html>

这是悉数代码,假如比较懒的同砚能够直接复制,这个和官网上的基础一样,只是途径做了修正,里边有几行解释调试的处所,能够删除的

4.末了就是背景控制器的代码

/**
     * 上传下载
     */
    public void upload(){
        render("/upload.html");
    }
    /**
     * 处置惩罚上传的东西,只要有要领就行。不用做处置惩罚就能够长传到默许的/upload 途径下
   * 这里能够本身做优化,修正,这里每次只能上传一个文件。本人顺手就写成list了
     */
    public void handleUpload(){
    //这里是为了检察信息
       // List<UploadFile> files = getFiles();
    //补充,如许能够设置上传文件的途径,pact就是上传文件的途径,默许是在/update下,这是就是设置成了/update/pact/下,maxSize 设置文件每次上传的最大值
    List<UploadFile> pacts = getFiles("pact", maxSize);

        System.err.println(files.get(0).getFileName());
        System.err.println(files.get(0).getUploadPath());
        System.err.println(files.get(0).getOriginalFileName());
        System.err.println(files.get(0).getContentType());
        System.err.println(files.get(0).getParameterName());
    //这里为了在页面上做下载所以就须要把文件上传到服务器的名字传过去,用作下载时刻挪用,找到指定的文件
        setAttr("msg",files.get(0).getFileName());
        renderJson();
    }
    
    /**
     * 下载
     */
    public void download(){
    //检察传过来的文件名字,测试用
       // String para = getPara("name");
       // System.err.println(para);
    //拿到下载文件地点的服务器途径
          String fpath = getSession().getServletContext().getRealPath("/upload");  
    //服务器途径和文件途径拼接
          File file=new File(fpath+"/"+para);  
        //推断文件是不是存在,存在就把文件传到前端下载
           if(file.exists()){  
            renderFile(file);         
           }  
           else{  
                renderJson();  
          }  
    }

如许基础就没什么了,写完了。

注重这里大概会报一个毛病


[ERROR]-[Thread: qtp817406040-23]-[com.jfinal.core.ActionHandler.handle()]: /hello/handleUpload
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.jfinal.aop.Invocation.invoke(Invocation.java:87)
    at com.jfinal.core.ActionHandler.handle(ActionHandler.java:74)
    at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:365)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
    ... 25 more
Caused by: java.lang.NoClassDefFoundError: com/oreilly/servlet/multipart/FileRenamePolicy
    at com.jfinal.core.Controller.getFiles(Controller.java:775)
    at com.rjj.control.StudentControl.handleUpload(StudentControl.java:235)
    ... 30 more
Caused by: java.lang.ClassNotFoundException: com.oreilly.servlet.multipart.FileRenamePolicy
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
    at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
    ... 32 more

这个问题是因为少一个jar包,只要把相应的jar导入就能够处理了。

以上就是layui+jfinal完成上传的要领的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
layui+jfinal完成上传的要领_WEB前端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>