upload.js报错
VM4061 upload.js:5 Uncaught ReferenceError: layui is not defined;
需要
$.getScript('https://www.layuicdn.com/layui/layui.js',function(){
从新加载一下才可以,有没有同问的,这个怎么解决呢
传统的 会刷新页面
<form id= "uploadForm" action= "XXXX" method= "post" enctype ="multipart/form-data"> <input type="file" name="file"> <input type ="submit" value="上传"/> </form>
至于ajax这个就可以,不会刷新页面
这是我在演示上点网络截取的部分信息 不知道是不是你要的那样
accept: application/json, text/javascript, */*; q=0.01 accept-encoding: gzip, deflate, br accept-language: zh-CN,zh;q=0.9 content-length: 82261 content-type: multipart/form-data; boundary=----WebKitFormBoundaryB30Ar7AE4AP3Z8RB Form Data(file: (binary)): ------WebKitFormBoundaryB30Ar7AE4AP3Z8RB Content-Disposition: form-data; name="file"; filename="downfile2.torrent" Content-Type: application/octet-stream ------WebKitFormBoundaryB30Ar7AE4AP3Z8RB--
你可以在演示上传,F12选网络看下请求头和Request 参数是不是你要的
如果你需要表单和文件一同上传的话,设定为暂不上传,然后把上传按钮绑定为你的表单提交按钮就可以实现
至于后端处理
java演示:
public String uploadProgramme(MultipartFile file) { ... File files = new File(realPath); //判断file是否存在,如果不存在,自动创建 if (!files.exists()) { files.mkdirs(); } ... //利用文件读写将本地文件读写到服务器 try { file.transferTo(files); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ... }
支持断点续传的一般是C/S,B/S是没办法支持断点续传的,如果是很大的文件或者视频文件的话,建议您选择其他插件,大文件上传的话一般使用并发分片上传的模式,flash文件流也可以,这样的话即使上传失败也不会重新上传整个文件,而且文件体积大、量比较多,上传的话还应该考虑md5校验,Web前端可使用百度的 webuploader H5大文件分片上传插件;
官网地址:
http://fex.baidu.com/webuploader/
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。采用大文件分片并发上传,极大的提高了文件上传效率。
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。(摘自WebUploader官网)