⑴ 百度网盘网页上传文件大小限制吗
1. 网络网盘超级会员,使用网盘Windows及Mac客户端进行大文件上传时,单文件最高达 20G;
2. 网络网盘会员,使用网盘Windows及Mac客户端进行大文件上传时,单文件最高达 10G;

⑵ 前端怎么实现web端上传超大文件
第一点:系统的配置

⑶ 如何在Web页上实现文件上传
JAVA WEB文件上传步骤如下:
 实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。
     1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file"> 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post
⑷ 求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 为佳.
⑸ java web 大文件上传下载
用框架   ssh
追问
如果大并发量,会不会出什么问题?
回答
这个我没试过,我只是上传过照片。我记得这个是有上传限制的,要在struts.xml文件中进行配置。
我的回答:
struts2支持多文件一起上传 , 封装性好。倘若文件大, 配置文件大小  可以搞定。上传速度就卡你网速了。
⑹ SpringBoot超大文件上传如何实现
不管什么技术,超大文件上传(超出一次tcp上限)都是要做分片和合并的,无非是自己做还是找控件的差别。
另外,springboot是后台接收,前端实现是由前端框架负责,比如vue。
以下是Vue+Springboot实现大文件上传的二种方式:
1、利用ElementUI的el-upload
优点:
简单方便,可以实现功能
缺点:
上传速度太慢,没有分片单线程上传1个G的文件即使在局域网也很慢
上传显示的进度条不准确,进度已经100%了,但是还需要等很久在服务端才生成完文
2、利用网络的webuploader
优点:
WebUploader是网上比较推荐的方式,分片上传大文件速度很快。
缺点:
必须依赖 jquery
不能 import 导入,只能在 index.html 里包含。
3. 利用vue-uploader
vue-uploader 是基于vue的uploader组件,缺省就是分片上传。
通过npm安装,基本流程参考github上的说明即可。
上传的基本原理就是前端根据文件大小,按块大小分成很多块,然后多线程同时上传多个块,同时调用服务端的上传接口,服务端会生成很多小块小块的文件。
所有块都上传完之后,前端再调用一个服务端的merge接口,服务端把前面收到的所有块文件按顺序组合成最终的文件。
⑺ JAVA WEB怎么实现大文件上传
解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。
1)开发一个web插件。用于上传文件。
2)开发一个FTP工具,不用web上传。
3)用现有的FTP工具。
下面是几款不错的插件,你可以试试:
1)Jquery的uploadify插件。具体使用。你可以看帮助文档。
2)网上有一个Web大文件断点续传控件:http://www.cnblogs.com/xproer/archive/2012/02/17/2355440.html
此控件支持100G文件的断点续传操作,提供了完善的开发文档,支持文件MD5验证,支持文件批量上传。
JavaUploader免费开源的,是用applet实现的,需要签名才能在浏览器上用,支持断点。缺点是收费。
3)applet也是一种方式,MUPLOAD组件就是以APPLET方式处理的。
如果你不需要访问用户的硬盘文件,那你可以使用FTP上传,也支持断点。但只要你访问用户磁盘,又要支持断点,那必须要签名的。不然浏览器不知道你的身份。
⑻ jsp 大文件分片上传处理如何实现
javaweb上传文件
上传文件的jsp中的部分
上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求
    1.通过form表单向后端发送请求
         <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
            <div class="bbxx wrap">
                <inputtype="text" id="side-profile-name" name="username" class="form-control">
                <inputtype="file" id="example-file-input" name="avatar">
                <button type="submit" class="btn btn-effect-ripple btn-primary">Save</button>
            </div>
        </form>
改进后的代码不需要form标签,直接由控件来实现。开发人员只需要关注业务逻辑即可。JS中已经帮我们封闭好了
    this.post_file = function ()
    {
        $.each(this.ui.btn, function (i, n) { n.hide();});
        this.ui.btn.stop.show();
        this.State = this.Config.state.Posting;//
        this.app.postFile({ id: this.fileSvr.id, pathLoc: this.fileSvr.pathLoc, pathSvr:this.fileSvr.pathSvr,lenSvr: this.fileSvr.lenSvr, fields: this.fields });
    };
通过监控工具可以看到控件提交的数据,非常的清晰,调试也非常的简单。
2.通过ajax向后端发送请求
            $.ajax({
                 url : "${pageContext.request.contextPath}/UploadServlet",
                 type : "POST",
                 data : $( '#postForm').serialize(),
                 success : function(data) {
                      $( '#serverResponse').html(data);
                 },
                 error : function(data) {
                      $( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);
                 }
            });
ajax分为两部分,一部分是初始化,文件在上传前通过AJAX请求通知服务端进行初始化操作
    this.md5_complete = function (json)
    {
        this.fileSvr.md5 = json.md5;
        this.ui.msg.text("MD5计算完毕,开始连接服务器...");
        this.event.md5Complete(this, json.md5);//biz event
 
        var loc_path = encodeURIComponent(this.fileSvr.pathLoc);
        var loc_len = this.fileSvr.lenLoc;
        var loc_size = this.fileSvr.sizeLoc;
        var param = jQuery.extend({}, this.fields, this.Config.bizData, { md5: json.md5, id: this.fileSvr.id, lenLoc: loc_len, sizeLoc: loc_size, pathLoc: loc_path, time: new Date().getTime() });
 
        $.ajax({
            type: "GET"
            , dataType: 'jsonp'
            , jsonp: "callback" //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
            , url: this.Config["UrlCreate"]
            , data: param
            , success: function (sv)
            {
                _this.svr_create(sv);
            }
            , error: function (req, txt, err)
            {
                _this.Manager.RemoveQueuePost(_this.fileSvr.id);
                alert("向服务器发送MD5信息错误!" + req.responseText);
                _this.ui.msg.text("向服务器发送MD5信息错误");
                _this.ui.btn.cancel.show();
                _this.ui.btn.stop.hide();
            }
            , complete: function (req, sta) { req = null; }
        });
    };
 
在文件上传完后向服务器发送通知
    this.post_complete = function (json)
    {
        this.fileSvr.perSvr = "100%";
        this.fileSvr.complete = true;
        $.each(this.ui.btn, function (i, n)
        {
            n.hide();
        });
        this.ui.process.css("width", "100%");
        this.ui.percent.text("(100%)");
        this.ui.msg.text("上传完成");
        this.Manager.arrFilesComplete.push(this);
        this.State = this.Config.state.Complete;
        //从上传列表中删除
        this.Manager.RemoveQueuePost(this.fileSvr.id);
        //从未上传列表中删除
        this.Manager.RemoveQueueWait(this.fileSvr.id);
 
        var param = { md5: this.fileSvr.md5, uid: this.uid, id: this.fileSvr.id, time: new Date().getTime() };
 
        $.ajax({
            type: "GET"
              , dataType: 'jsonp'
              , jsonp: "callback" //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
              , url: _this.Config["UrlComplete"]
              , data: param
              , success: function (msg)
              {
                  _this.event.fileComplete(_this);//触发事件
                  _this.post_next();
              }
              , error: function (req, txt, err) { alert("文件-向服务器发送Complete信息错误!" + req.responseText); }
              , complete: function (req, sta) { req = null; }
        });
    };
 
这里需要处理一个MD5秒传的逻辑,当服务器存在相同文件时,不需要用户再上传,而是直接通知用户秒传
    this.post_complete_quick = function ()
    {
        this.fileSvr.perSvr = "100%";
        this.fileSvr.complete = true;
        this.ui.btn.stop.hide();
        this.ui.process.css("width", "100%");
        this.ui.percent.text("(100%)");
        this.ui.msg.text("服务器存在相同文件,快速上传成功。");
        this.Manager.arrFilesComplete.push(this);
        this.State = this.Config.state.Complete;
        //从上传列表中删除
        this.Manager.RemoveQueuePost(this.fileSvr.id);
        //从未上传列表中删除
        this.Manager.RemoveQueueWait(this.fileSvr.id);
        //添加到文件列表
        this.post_next();
        this.event.fileComplete(this);//触发事件
    };
这里可以看到秒传的逻辑是非常 简单的,并不是特别的复杂。
            var form = new FormData();
            form.append("username","zxj");
            form.append("avatar",file);
            //var form = new FormData($("#postForm")[0]);
            $.ajax({
                url:"${pageContext.request.contextPath}/UploadServlet",
                type:"post",
                data:form,
                processData:false,
                contentType:false,
                success:function(data){
        
                    console.log(data);
                }
            });
java部分
文件初始化的逻辑,主要代码如下
FileInf fileSvr= new FileInf();
fileSvr.id = id;
fileSvr.fdChild = false;
fileSvr.uid = Integer.parseInt(uid);
fileSvr.nameLoc = PathTool.getName(pathLoc);
fileSvr.pathLoc = pathLoc;
fileSvr.lenLoc = Long.parseLong(lenLoc);
fileSvr.sizeLoc = sizeLoc;
fileSvr.deleted = false;
fileSvr.md5 = md5;
fileSvr.nameSvr = fileSvr.nameLoc;
 
//所有单个文件均以uuid/file方式存储
PathBuilderUuid pb = new PathBuilderUuid();
fileSvr.pathSvr = pb.genFile(fileSvr.uid,fileSvr);
fileSvr.pathSvr = fileSvr.pathSvr.replace("\\","/");
 
DBConfig cfg = new DBConfig();
DBFile db = cfg.db();
FileInf fileExist = new FileInf();
    
boolean exist = db.exist_file(md5,fileExist);
//数据库已存在相同文件,且有上传进度,则直接使用此信息
if(exist && fileExist.lenSvr > 1)
{
     fileSvr.nameSvr             = fileExist.nameSvr;
     fileSvr.pathSvr        = fileExist.pathSvr;
     fileSvr.perSvr              = fileExist.perSvr;
     fileSvr.lenSvr              = fileExist.lenSvr;
     fileSvr.complete       = fileExist.complete;
     db.Add(fileSvr);
    
     //触发事件
    up6_biz_event.file_create_same(fileSvr);
}//此文件不存在
else
{
     db.Add(fileSvr);
     //触发事件
    up6_biz_event.file_create(fileSvr);
    
     FileBlockWriter fr = new FileBlockWriter();
     fr.CreateFile(fileSvr.pathSvr,fileSvr.lenLoc);
}
接收文件块数据,在这个逻辑中我们接收文件块数据。控件对数据进行了优化,可以方便调试。如果用监控工具可以看到控件提交的数据。
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();  
ServletFileUpload upload = new ServletFileUpload(factory);
List files = null;
try
{
     files = upload.parseRequest(request);
}
catch (FileUploadException e)
{// 解析文件数据错误 
    out.println("read file data error:" + e.toString());
    return;
  
}
 
FileItem rangeFile = null;
// 得到所有上传的文件
Iterator fileItr = files.iterator();
// 循环处理所有文件
while (fileItr.hasNext())
{
     // 得到当前文件
     rangeFile = (FileItem) fileItr.next();
     if(StringUtils.equals( rangeFile.getFieldName(),"pathSvr"))
     {
         pathSvr = rangeFile.getString();
         pathSvr = PathTool.url_decode(pathSvr);
     }
}
 
boolean verify = false;
String msg = "";
String md5Svr = "";
long blockSizeSvr = rangeFile.getSize();
if(!StringUtils.isBlank(blockMd5))
{
     md5Svr = Md5Tool.fileToMD5(rangeFile.getInputStream());
}
 
verify = Integer.parseInt(blockSize) == blockSizeSvr;
if(!verify)
{
     msg = "block size error sizeSvr:" + blockSizeSvr + "sizeLoc:" + blockSize;
}
 
if(verify && !StringUtils.isBlank(blockMd5))
{
     verify = md5Svr.equals(blockMd5);
     if(!verify) msg = "block md5 error";
}
 
if(verify)
{
     //保存文件块数据
     FileBlockWriter res = new FileBlockWriter();
     //仅第一块创建
     if( Integer.parseInt(blockIndex)==1) res.CreateFile(pathSvr,Long.parseLong(lenLoc));
     res.write( Long.parseLong(blockOffset),pathSvr,rangeFile);
     up6_biz_event.file_post_block(id,Integer.parseInt(blockIndex));
    
     JSONObject o = new JSONObject();
     o.put("msg", "ok");
     o.put("md5", md5Svr); 
     o.put("offset", blockOffset);//基于文件的块偏移位置
     msg = o.toString();
}
rangeFile.delete();
out.write(msg);
