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、安裝完成後,重啟瀏覽器即可。此時再去點擊上傳按鈕,發現可以找到本地的文件,並且可以上傳了。