文件上传

前端大文件上传解决方案

Deadly 提交于 2020-02-20 05:14:26
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成。 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用PHP进行示例编写。 本文相关示例代码位于github上,主要参考 聊聊大文件上传 大文件切割上传 文件上传的几种方式 首先我们来看看文件上传的几种方式。 普通表单上传 使用PHP来展示常规的表单上传是一个不错的选择。首先构建文件上传的表单,并指定表单的提交内容类型为enctype="multipart/form-data",表明表单需要上传二进制数据。 然后编写index.php上传文件接收代码,使用move_uploaded_file方法即可(php大法好…) form 表单上传大文件时,很容易遇见服务器超时的问题。通过xhr,前端也可以进行异步上传文件的操作,一般由两个思路。 文件编码上传 第一个思路是将文件进行编码,然后在服务端进行解码,之前写过一篇在前端实现图片压缩上传的博客

JQ图片文件上传之前预览功能

耗尽温柔 提交于 2020-02-19 11:55:56
1、先准备一个div onchange触发事件 <input type="file" onchange="preview(this)" ></span> <div id="preview"></div> 2、写JS代码 //上传图片之前预览图片 function preview(file){ if (file.files && file.files[0]){ var reader = new FileReader(); reader.onload = function(evt){ $("#preview").html('<img src="' + evt.target.result + '" width="95px" height="50px" />'); } reader.readAsDataURL(file.files[0]); }else{ $("#preview").html('<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\'' + file.value + '\'"></div>'); } } 来源: https://www.cnblogs.com/jackruicao/p/7819453.html

方法的重写

回眸只為那壹抹淺笑 提交于 2020-02-18 21:57:23
定义: 子类重写父类的方法 super关键字 ​ 定义: 子类里可以访问父类的被覆盖的属性和方法. 方法的重写: 就是子类重写父类的方法; 返回值,方法名,参数列表和父类的方法一模一样; ​ super关键; 在子类里面可以访问父类被覆盖掉的属性和方法; package com.lv.sup; //统一使用这个类来进行文件上传 public class FileUpLoadSuper { String fileName; //实现一个文件上传的方法 public boolean upload(String fileName){ //有4行代码来实现文件上传 System.out.println("假装文件上传的过程..."); return true;//表示文件上传成功 } } package com.lv.sup; //专门用来上传world文档的 public class FileUpLoadWord extends FileUpLoadSuper { //对这个方法进行重写 public boolean upload(String fileName) { //我这专门用来上传Word文档的方法,是需要检查一下是否是Word文档,然后在进行上传 if("word".equals(fileName)){//判断是Word文档,然后进行上传 //写4行代码来实现文件上传 /

Enctype与文件上传

江枫思渺然 提交于 2020-02-18 18:47:35
  enctype到底是个啥?   答:多用途网际邮件扩充协议,在脚本的用法是form.encoding=XXX!表单里面enctype 属性的默认值是“application/x-www-form-urlencoded”,但当向服务器传送大量文本、包含非ASCII字符或二进制数的数据时,这个默认类型就不能胜任了。这时,文件上载提交表单时应使用“multipart/form-data”内容类型。表单直接提交到电子邮箱时候中文字会编码成"%XX%YYPZZ..."这种怪码!这时就可以用text/plain,使中文字不被编码,更容易看!   用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。   application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。   multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到   text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。   enctype="multipart/form-data是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data

FCKEditor文件上传提示信息的汉化

馋奶兔 提交于 2020-02-16 23:30:23
FCKEditor文件上传提示信息的汉化 在FCKeditor中,虽然可以自动监测客户端语言,但是仍有小部分信息未能得到汉化。例如上传图片、Flash时,上传成功和上传失败的对话框提示信息均为英文,只要找到相应的提示文本,修改为中文即可。 这里以汉化上传图片时的提示信息为例: 用DW或者UE打开 FCKeditor/editor/dialog/fck_image 下的 fck_image.js 文件,首先找到438行, 把原文“Your file has been successfully uploaded”,替换为“文件已成功上传!”,同理, 第447行,“A file with the same name is already available. The uploaded file has been renamed to”替换为“同名文件已经存在。 刚才上传的文件已自动命名为:”, 第450行,“文件类型不正确!”替换“Invalid file type”, 第 453行,“你可能没有足够的权限上传文件,请检查服务器设置。”替换“Security error. You probably don't have enough permissions to upload. Please check your server.”, 第456行,“'文件上传失败!错误号:”替换

SpringBoot整合WEB开发--(三)文件上传

喜欢而已 提交于 2020-02-16 16:30:59
文件上传:   Java中文件上传一共涉及到两个组件,CommonsMultipartResolver和StandardServletMultipartResolver,其中CommonsMultipartResolver使用commons-fileupload来处理multipart请求,StandardServletMultipartResolver基于Servlet3.0来处理multipart请求的。如果使用StandardServletMultipartResolver则不需要额外的jar包。Tomcat7.0开始支持Servlet3.0,SpringBoot2.0.4内置Tomcat是8.5.32,所以可以直接使用StandardServletMultipartResolver。   SpringBoot提供的文件上传自动化配置类MultipartAutoConfiguration中, @ConditionalOnMissingBean,如果没有提供MultipartResolver,那么默认StandardServletMultipartResolver @ConditionalOnMissingBean({MultipartResolver.class}) public StandardServletMultipartResolver

socket实现文件上传(客户端向服务器端上传照片示例)

為{幸葍}努か 提交于 2020-02-16 14:06:19
本示例在对socket有了基本了解之后,可以实现基本的文件上传。首先先介绍一下目录结构,server_data文件夹是用来存放客户端上传的文件,client_data是模拟客户端文件夹(目的是为了测试文件夹下的文件能否上传) ,还有两个主要的py文件,onload_server.py onload_client.py 。 目录结构如图: 下面直接上两段主要py文件代码: 客户端(上传端)代码: 1 #__author__:Kelvin 2 #date:2020/2/16 11:09 3 4 import socket,os 5 6 sk=socket.socket() 7 address=("127.0.0.1",8000) 8 sk.connect(address) 9 10 while True: 11 inp=input("请输入 命令|文件名:") # post|a.jpg 12 size=os.path.getsize(inp.split("|")[1]) 13 # print(size) 14 inp=inp+"|%s"%size 15 sk.send(inp.encode("utf8")) 16 sk.recv(1024) # 接收 避免粘包发送的无效数据 17 f=open(inp.split("|")[1],"rb") 18 sent_size=0 19

Struts2 文件上传

99封情书 提交于 2020-02-13 14:12:49
JSP界面: 必须把表单的enctype属性改为 multipart/form-data 才能上传 Action: 程序如果多人使用,必须保证文件名是唯一,文件名相同会覆盖掉原来的文件,所以使用时间作为文件名。可以把生成的文件名直接存入数据库中,就可找到文件。 Struts.xml: 通过Struts自带的 fileUpload拦截器 控制上传文件的 类型和最大值 (使用param给参数赋值),这里要注意的是,红线的默认拦截器栈必须声明,且在文件上传拦截器后,不然param的参数会失效(没试过,老师说的。。照葫芦画瓢把~) 来源: https://www.cnblogs.com/MonkeyJava/p/10807117.html

jQuery OCUpload ——> 一键上传插件

风流意气都作罢 提交于 2020-02-13 10:52:50
OCUpload为jQuery的插件(One Click Upload),意思为一键上传,封装了对于文件上传的一些方法,只需几行代码,文件上传优雅而简洁。 对于传统的文件上传,只是通过input标签,通过设置enctype为multipart/form-data,选中文件后还需点击按钮,提交表单,才能在后台进行相关字段解析,通过流来进行文件上传,上传成功后,页面多半要刷新,无法给用户良好的体验。 OCUpload实现了页面“不刷新”,选择文件后直接上传,不需要选中文件后再点击按钮上传表单。 ajax 不能做文件上传。 插件使用步骤 1. 在 页面中引入OCUpload插件的 js 文件 <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.ocupload-1.1.2.js"></script> 2. 在页面中提供任意一个元素来“占位子”(上传文件一般选择按钮,所以这里利用easyui定义一个按钮) <body> <a id="import" class="easyui-linkbutton" data-options="iconCls:'icon-redo'">上传文档</a> </body> 3. 在head中给id为import的按钮添加upload事件