⑴ 百度網盤網頁上傳文件大小限制嗎
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);
