1. 哪种手机浏览器可以上传大照片
UC浏览器最大可以上传1M,应该算大的了
QQ浏览器没试过,估计也行
不过推荐使用uc浏览器
2. js 大文件分片上传处理如何实现
推荐采用webuploader控件来解决。
关于WebUploader的功能说明:
大文件上传续传
支持超大文件上传(100G+)和续传,可以关闭浏览器,重启系统后仍然继续上传。
开源
提供ASP.NET,JSP,PHP示例和源代码,其中JSP提供MySQL,Oracle,SQL Server数据库的配置和示例代码。
分片、并发
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。
预览、压缩
支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。
解析jpeg中的meta信息,对于各种orientation做了正确的处理,同时压缩后上传保留图片的所有原始meta数据。
多途径添加文件
支持文件多选,类型过滤,拖拽(文件&文件夹),图片粘贴功能。上传本地指定路径的文件,不需要通过点击按钮选择文件。
粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。
HTML5 & FLASH
兼容主流浏览器和低版本浏览器,接口一致,实现了两套运行时支持,用户无需关心内部用了什么内核。而且支持IE6,IE8浏览器。
同时Flash部分没有做任何UI相关的工作,方便不关心flash的用户扩展和自定义业务需求。
基于内存映射模式进行IO操作,充分发挥操作系统性能。
MD5秒传
当文件体积大、量比较多时,支持上传前做文件md5值验证,一致则可直接跳过。
如果服务端与前端统一修改算法,取段md5,可大大提升验证性能,耗时在20ms左右。
易扩展、可拆分
采用可拆分机制, 将各个功能独立成了小组件,可自由搭配。
采用AMD规范组织代码,清晰明了,方便高级玩家扩展。
3. 上传文件太大,提示浏览器最大可上传1000mb。更大文件请使用命令行工具怎么办
那你就用命令行工具提示符去上传呗,或者直接极限压缩到1000MB以下就好了
4. 求php怎么实现web端上传超大文件
加大PHP上传文件大小的限制,是通过修改PHP.INI文件来实现,但是这个支持是有限度的,因为WEB协议本为下载而生,超大文件的上传是FTP的专利。
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。
1.file_uploads=on/off
是否允许通过http方式上传文件
2.max_execution_time=30
允许脚本最大执行时间,超过这个时间就会报错
3.memory_limit=50M
设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此指令只有在编译时设置了
--enable-memory-limit标志的情况下才生效
4.upload_max_filesize=20M
允许上传文件的最大大小,此指令必须小于post_max_size
5.upload_tmp_dir
上传文件临时存放目录
6.post_max_size=30M
允许post方式可以接受最大大小
$_FILES['myFile']['name'] 客户端上次文件的原始名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的状态码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK
值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE
值:4; 没有文件被上传。
值:5; 上传文件大小为0.
文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。
也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。
附:修改PHP上传文件大小限制的方法
1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M
3. 很多人都会改了第二步.但上传文件时最大仍然为 8M.
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为
upload_max_filesize = 100M
另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
5. 早期浏览器如何上传文件
网络:化境无组件asp上传组件,早期很流行的,下一个自己分析下源代码。本质就是ctrl+c后ctrl+v到远程。php、js什么的上传其实原理是一样的,只是实现语言不同。现在浏览器也是这样上传文件到服务器的,只是现在有很多flash上传或批量上传,大原理没变,核心都是一样的。
6. 哪个浏览器在QQ邮箱上传超大文件最好急急急
必须是IE
7. PHP实现浏览器端大文件分片上传如何实现
分片上传的原理就是通过切割上传文件,然后在浏览器的头部通过etag来进行划分文件传输,服务器端接收到文件片段和分割起始符之后,进行拼接文件,最后合成一个大文件。
你可以自己通过php来获取浏览器头部传输标志来进行文件的拼接组装,也可以通过现有的大文件传输类来上传文件。
关键点
记住分割文件点,也就是分割文件的顺序,拼接文件需要通过etag按照顺序拼接,分片可以并发传输,这其实也是并发下载的原理。
8. fetch在ie11浏览器上传文件
实现一个大文件分片上传的功能,仅支持单个文件的分片逐一上传,对上传的文件没有大小限制,但上传速度没有过互联网的测验,本地测验,上传速度约等于本地文件拷贝速度,有很多弊端,但可满足基本的大文件分片上传功能。
本文仅为前端vue,如需后台java,请移步我的另一篇文章:大文件分片上传的后台方法(Java)
1 HTML部分
没啥可说的,使用Element-ui的<el-upload>标签,上代码
1.1 实现文件的选择与上传(使用Element-ui的<el-upload>标签)
<template>
<div>
<el-upload
:accept="accept"
:auto-upload="auotUpload"
action=""
:multiple="multiple"
:http-request="prepareUpload"
>
</el-upload>
</div>
</template>
登录后复制
1.2 实现文件上传的一个进度条(使用Element-ui的<el-progress>标签)
<template>
<div>
<el-card style="margin-top:2px;margin-lift:2%;margin-right:2%;height:40px;" >
<div style="margin-top:4px;margin-lift:2%">
<el-row>
<el-col :span="8">
<div style="margin-top:8px;margin-lift:2%">{{fileInfo.fileName}}</div>
</el-col>
<el-col :span="8">
<div style="margin-top:8px;margin-lift:2%">
<el-progress :percentage="percentage" type="line" :text-inside="true" :stroke-width="strokeWidth" :status="status"/>
</div>
</el-col>
<el-col :span="3">
<div style="margin-top:8px;margin-lift:2%">{{fileInfo.fileName}}/{{fileInfo.allNum}}Mb</div>
</el-col>
<el-col :span="5">
<el-button type="text" @click="usable=1">暂停</div>
<el-button type="text" @click="prepareUpload(0)">继续</div>
</el-col>
</el-row>
</div>
</el-card>
</div>
</template>
登录后复制
2 JavaScript部分
2.1 参数部分
data(){
return:{
//文件参数
fileInfo:{
md:"", //文件唯一标识码,类似MD5,如果拥有MD5技术可以替换为MD5
allNum:"", //文件分片后的全部分片数量
successNum:"", //上传成功的分片文件数量
fileName:"", //文件名
detail:"", //文件描述
path:"", //文件存储路径
type:0, //文件状态,0为未上传完成,1为上传完成,用于查询时是否展示
parentId:"", //文件类型的父类,用于查询时是否展示
fileTypeId:"" //文件类型,用于查询时是否展示
},
SIZE:1024*1024, //控制单个分片文件的大小
//以下为`el-upload`标签使用的参数
accept:"", //控制默认选择的文件类型
autoUpload:true, //是否在选择文件后自动开始上传文件
uploadURL:"", //文件上传地址这里为空,因为不需要使用这个参数,但是必须有
baseURL:"", //文件上传地址的根地址,后边方法中会拼接完成完整的地址,根地址一般为:http://127.0.0.1:8080/demo/......
limit:1, //支持同时上传的文件数量
multiple:false, //是否支持文件多选
showFileList:false, //是否显示文件列表
file:"", //上传文件列表
//以下为进度条组件所用参数
strokeEidth:12, //进度条的高度
percentage:0, //进度条百分比
sataus:"exception", //进度条状态
//以下用于控制文件上传功能是否开启
usable=1
}
}
登录后复制
2.2 方法部分
2.2.1 开始上传之前的验证方法
prepareUpload(params){ //准备开始上传
//这里检查是否有文件正在上传,如果上传开始,则usable会被修改为0
if(this.usable===0){return this.$message({message:"当前正在执行文件上传任务,请在当前任务结束后再启动次功能",type="warning"})}
let file=params.file
//这里判断该方法是通过哪里调用的,
//如果是通过选择文件调用,则params!==0,则将文件保存到this.file
//如果是通过继续按钮调用,则params===0,则取用this.file继续执行文件上传
if(params===0){
//这里判断一下是否真的有文件在上传,如果没有,则退出任务
if(this.file===""){return this.$message({message:"当前暂无任务,无法继续",type="warning"})}
file=this.file;
this.$message({message:"文件开始继续上传",type="success"})
}else{
file=params.file;
this.file=params.file
}
//这里验证文件类型,可以根据自己需要进行验证,这里验证是否为zip或rar文件,如果不是则不允许上传
if(!(file.name.substring(file.name.length-4)===".zip"||!(file.name.substring(file.name.length-4)===".rar"){
return this.$message({message:"请选择zip或rar文件",type="warning"})
}
//这里验证文件大小,可自行修改限制
if(file.size>1024*1024*1024*3){return this.$message({message:"您无法选择一个大于3GB的文件",type="warning"})}
if(file.size<=0){return this.$message({message:"您无法选择一个大于大小为0的文件",type="warning"})}
//开始执行文件上传的前置操作,将usable修改为0
this.usable=0
//修改文件名,用于文件下载时的为文件重命名后带有文件后缀,避免文件无法打开问题
if(this.fileInfo.fileName===""){
this.fileInfo.fileName=file.name
}else{
const a=this.fileInfo.fileName.substring(this.fileInfo.fileName.length-3)
if(!(this.fileInfo.fileName.substring(this.fileInfo.fileName.length-3)===".7z"||
this.fileInfo.fileName.substring(this.fileInfo.fileName.length-3)==="zip"||
this.fileInfo.fileName.substring(this.fileInfo.fileName.length-3)==="rar"||)
){
if(fileName.substring(file.name.length-3)===".7z"){
this.fileInfo.fileName+=file.name.substring(file.name.length-3)
}else{
this.fileInfo.fileName+=file.name.substring(file.name.length-4)
}
}
this.getMD5(file) //自己写的一个简易版计算文件唯一标识码,具体介绍在方法中有
this.getFileChunk(file) //获取文件分片集合,用于逐一上传
//这里写一个请求,用于判断文件是否已经上传,判断文件的状态是否已经上传完成
//这里请求方法请使用自己的,我是自己封装的请求方法
el.post("请求地址",this.fileInfo).then((result)=>result.json()).then((result)=>{
this.getResult(result) //因为很多地方需要写同样的内容,就封装了一个方法来将返回值存储起来
//判断一下文件状态,如果为1则表示服务器中存在与该文件相同的文件,则无需再次上传,执行秒传,否则继续执行
if(result.result.type===1){
//执行秒传时需要对数据库进行写入新文件名的操作,所以还需要一个请求来完成
el.post("请求地址",this.fileInfo).then((result)=>result.json()).then((result)=>{
if(result.result.type===1){return this.$message({message:"秒传成功",type:"success"})
}
}else{
this.beforeUpload() //如果文件没有秒传则调用上传之前的方法
}
}
}
登录后复制
2.2.2 开始上传文件
开始上传之前
beforeUpload(){
//循环调用该方法,实现对fileList的逐一上传,该方法主要为避免vue的异步执行导致逻辑错误
//实现方式为通过成功上传次数与总分片数量比较判断何时return
//成功上传次数为后台返回,所以js无需做次数递增,判断依据为this.fileInfo.successNum
this.beginUpload() //调用开始文件上传方法
}
登录后复制
开始上传文件
beginUpload(){
//判断用户是否操作了暂停按钮,如果是则终止任务
if(this.usable===1){return this.$message({message:"任务已暂停",type:"success"})}
//创建请求头
const headers=new Headers({'Csrf-Token':wind
9. 怎样上传大文件
145M能直接访问地址的基本上没有,而且145M的swf放在哪别人也不好访问,那要下载多久才能看见,浏览器也受不了那么大的flash,除非你们是放在局域网内速度很快的情况下才可以.
10. me浏览器怎么上传文件
解决方法如下:
1、打开IE浏览器,找到IE的Internet选项菜单,开启菜单栏的根据下列方面找。
2、但是有些IE的工具栏关闭了,查找Internet选项。
3、找到Internet选项后,点击,选择安全选项卡,并点击”自定义级别“。
4、找到“将文件上载到服务器时包含本地目录路径”选择“启用”。然后点击确定关闭IE,重启打开。
5、更新浏览器的flash版本。搜索”flash player“即可找到,的“Adobe Flash Player系统插件”。
6、点击后,浏览器会自动跳转到下载选择界面,在界面中取消可选程序,然后点击“立即安装”。
7、安装完成后,重启浏览器即可。此时再去点击上传按钮,发现可以找到本地的文件,并且可以上传了。