1. 程式人生 > >javascript對上傳檔案的相關操作

javascript對上傳檔案的相關操作

大多數網站都有很多涉及檔案上傳的需求,例如:一些SNS網站為了讓使用者更加形象化,會讓使用者自定義上傳頭像檔案。現在介紹一些關於javascript操作上傳檔案的方法,包括限制上傳檔案的格式、獲取上傳檔案的大小、清空上傳檔案、多檔案上傳等。

瀏覽器內建的file型input元素在表單提交時,會完成向後臺傳輸檔案的整個過程,這個例子不關注後臺邏輯,只關注前端業務,但是記得不要丟掉enctype="multipart/form-data"。

<form id='fileUpload' enctype="multipart/form-data">
    <p><input type="file" name='file1' id='filedemo1'> </p>
    <input type="button" id='addFileUpload' value="新增">
    <input type="button" id='clearFileUpload' value="清空">
    <input type="button" id='fileUploadSub' value="上傳">
</form>

<script type="text/javascript">
    window.onload = function(){
        uploadCount = 1;//增加的檔案“input”標示符


        isIE = function(){//是否是ie
            return document.all ? true : false;
        }


        getFileSize = function(_f){//獲取檔案大小
            var _fileSize = 0;
            if (this.isIE() && !_f.files) {
                var filePath = _f.value;
                var fileSystem = new ActiveXObject("Scripting.FileSystemObject");


                if(!fileSystem.FileExists(filePath)){
                    return 0;
                }
                var file = fileSystem.GetFile (filePath);
                _fileSize = file.Size;
            } else {
                _fileSize = (_f.files[0] && _f.files[0].size) || 0;
            }
            return _fileSize;
        }


        fileType = function(_eForm, types){//限制上傳檔案的格式
            var _elements = _eForm.elements,
                    _elementsLen = _elements.length
            _ei = null,
                    _v = "",
                    _contentType = "",
                    i = 0;
            for (; i < _elementsLen ; i++){
                _ei = _elements[i];
                if(_ei.type == "file"){
                    //var _i = _ei.value.lastIndexOf("\\");
                    _v = _ei.value,
                            _contentType = _v && _v.match(/^(.*)(\.)(.{1,8})$/)[3];


                    if(!_v || types.search(_contentType) != -1){//如果檔案上傳為空或者型別為限制類型則返回false
                        return false;
                    }
                }
            }
            return true;
        }


        clearFile = function(_eForm){//清空input為file的ui
            var _elements = _eForm.elements,
                    _elementsLen = _elements.length,
                    _ei = null,
                    i = 0;
            for (; i < _elementsLen ; i++){
                _ei = _elements[i];
                (_ei.type == "file") && ((isIE() && (_ei.outerHTML = _ei.outerHTML)) || (_ei.value = ""));//如果為IE,利用其特性清空file文字資料,否則直接將value設定為空值
            }
        }


        fileUpload = function(){//上傳檔案的相關業務
            var _fileUpload = document.getElementById("fileUpload"),
                    _addFileUpload = document.getElementById("addFileUpload"),
                    _clearFileUpload = document.getElementById("clearFileUpload"),
                    _filedemo1 = document.getElementById("filedemo1"),
                    _fileUploadSub = document.getElementById("fileUploadSub");
            _fileUploadSub.onclick =function(){
                alert("測試獲取檔案大小:" + getFileSize(_filedemo1));//獲取上傳檔案的大小
                if(!fileType(_fileUpload, "text")){//限制上傳檔案的格式 ---引數(上傳檔案的表單物件, 被限制的格式)
                    return;
                }
            }


            _clearFileUpload.onclick =function(){//清除上傳檔案的內容
                clearFile(_fileUpload);
            }


            _addFileUpload.onclick =function(){//動態多檔案上傳,新增上傳檔案元素
                uploadCount++;
                var  _input=document.createElement("input"),
                        _pE=document.createElement("p");
                _input.name="filedemo"+uploadCount;
                _input.id="filedemo"+uploadCount;
                _input.type="file";
                _pE.appendChild(_input);
                _fileUpload.insertBefore(_pE,document.getElementById("addFileUpload"));
            }
        }
        fileUpload();
    };
</script>

相關推薦

javascript檔案相關操作

大多數網站都有很多涉及檔案上傳的需求,例如:一些SNS網站為了讓使用者更加形象化,會讓使用者自定義上傳頭像檔案。現在介紹一些關於javascript操作上傳檔案的方法,包括限制上傳檔案的格式、獲取上傳檔案的大小、清空上傳檔案、多檔案上傳等。 瀏覽器內建的file型input

更改php和nginx檔案的限制+php應禁用的高危函式

php.ini檔案大小時間限制 post _max_size = 60m 可接受最大post資料(表單提交最大資料包括標題內容附件等) file_uploads = On允許上傳 upload_m

JavaScript獲取檔案的檔名及副檔名

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>獲取上傳檔案的檔名及副檔名</title></head><

利用hfs工具檔案操作教程

一、首先我用的hfs版本如下: 二、我們可以從hfs的幫助文件中找到關於上傳檔案的操作: 官方檔案並不是step by step的上圖紅框的操作是要右鍵資料夾的,找到屬性才可以的,如上圖右。 三、用瀏覽器輸入hfs中的url,就可以看到hfs定位到的資料夾中的內容

php 應用 bootstrap-fileinput 檔案 外掛 操作的方法

//先載入外掛所需要的 js 、css 檔案 <link href="css/fileinput.css" rel="stylesheet" type="text/css" /&g

C# sharepoint 列表的一些基本操作,包括新增/刪除/查詢/檔案給sharepoint list新增資料

操作List前請設定SPWeb的allowUnsafeUpdate = true; var site = new SPSite("http://stormwind:10000").RootWeb; site.AllowUnsafeUpdates = true;   新增sha

JavaScript/Jsp 實現資料庫的增刪改查和簡單的下載檔案

完成目標:在頁面顯示資料庫的資訊,並且完成對資料庫的增刪改查,並且增加分頁功能。在頁面實現圖片或文字的下載。 1.增刪改查操作 User實體類程式碼: package com.jredu.web.entity; public class User { private

input 檔案的一些操作

檔案的上傳平常使用input type=“file”使用 不過這預設太醜了 我們可以呼叫一下點選 <!DOCTYPE html> <html lang="en"> <head> <meta c

阿里雲 javascript檔案(圖片、視訊、壓縮包等檔案)到 物件儲存 OSS ,返回檔案、圖片、音訊、視訊等URL路徑

目的:前端上傳檔案(圖片、視訊、音訊等)到阿里雲伺服器裡面,並且獲得上傳檔案的URL路徑 前提:首先要買一個阿里雲伺服器,自己百度不會; 第一步:登入阿里雲賬號,點選管理控制檯-->物件儲存 OSS 第二步:新建儲存空間(圖一、圖二) (圖一) (圖二

github檔案涉及到的操作

一、解除GitHub上傳檔案大小限制 上傳專案到GitHub上,當某個檔案大小超過100M時,就會上傳失敗,因為預設的限制了上傳檔案大小不能超過100M。如果需要上傳超過100M的檔案,就需要我們自己去修改配置。 輸入命令:git config http.postBuffer 52428

Javascript js結合axios檔案阿里雲oss 親測有效

本案例區別與網上其他案例,採用vue-axios,先獲取臨時授權,授權成功後上傳圖片到OSS,僅供參考,各家公司的後臺配置都不相同 <!DOCTYPE html> <html lang="en"> <head>

ajax非同步檔案完成後執行其他操作

var fileCount=檔案個數;//計數器 $.ajax({             //寫死測試             url: baseUrl + "/dfs/upload/plugins/fileproxy/fileproxy?type=upload&

springmvc框架檔案操作

 前端頁面為,通過form表單提交 <form method="post" action="uploadFile" enctype="multipart/form-data"> <input type="file" name="myFile

PHP檔案相關配置

file_uploads (允許/禁止 PHP開啟HTTP檔案上傳(布林)) upload_tmp_dir (檔案上傳時臨時檔案所在目錄(字串)) upload_max_filesize (上傳檔案最大是多少(整型),單位:bytes) max_file_uploads (允許上傳的最大檔案數(整型))

前臺檔案以及頁面的檔案顯示操作

1、UI佈局: (1)新增圖片位的div:            <div class="add_remove_file"></div> (2)檔案顯示的模板佈局(重點):    <!-- 模板放在add_remove_file外面 --&g

PHP檔案操作例項詳解(包含檔案型別MIME驗證)

本文例項分析了PHP檔案上傳操作。分享給大家供大家參考,具體如下: 檔案上傳 發生在瀏覽器向伺服器發出的請求中。 檔案,對於瀏覽器來講,就是表單中的一個特殊型別的資料而已。 瀏覽器表單中的資料,兩種型別: 字串型別(位元組流編碼) 檔案型別(二進位制編碼),檔案是表單資料中

xutils3 檔案操作——個人小計

上傳檔案注意: 使用KeyValue物件進行新增檔案操作 int uid = 2; //普通欄位的儲存 requestParams.addBodyParamete

檔案操作】Http的request檔案獲取檔名稱

public static String getFileName(InputStream is) throws IOException { StringBuffer sb =

selenium+python檔案操作

上傳過程一般要開啟一個本地視窗,從視窗選擇本地檔案新增。selenium webdriver只要定位上傳按鈕,通過send_keys新增本地檔案路徑就可以了,絕對路徑和相對路徑都可以1、操作檔案上傳例子:upload_file.html<html> <he

SpringMVC_20_使用HttpMessageConverter T 實現了檔案(不推薦)和下載檔案操作

使用HttpMessageConverter< T>將請求資訊轉化並繫結到處理方法的入參中或將響應結果轉化為對應型別的響應資訊,Spring提供了兩種途徑: 使用@RequestBody/@ResponseBody對處理方法進行標註 使用Ht