`
pcajax
  • 浏览: 2162918 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

multiple file upload 多文件上传精典

阅读更多

 

<html>

<head>
    <!-- Include the javascript -->
    <script src="multifile_compressed.js"></script>
</head>

<body>

<!-- This is the form -->
<form enctype="multipart/form-data" action="your_script_here.script" method = "post">
    <!-- The file element -- NOTE: it has an ID -->
    <input id="my_file_element" type="file" name="file_1" >
    <input type="submit">
</form>
Files:
<!-- This is where the output will appear -->
<div id="files_list"></div>
<script>
    <!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->
    var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
    <!-- Pass in the file element -->
    multi_selector.addElement( document.getElementById( 'my_file_element' ) );
</script>
</body>
</html>
/**
* Convert a single file-input element into a 'multiple' input list
*
* Usage:
*
*   1. Create a file input element (no name)
*      eg. <input type="file" id="first_file_element">
*
*   2. Create a DIV for the output to be written to
*      eg. <div id="files_list"></div>
*
*   3. Instantiate a MultiSelector object, passing in the DIV and an (optional) maximum number of files
*      eg. var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
*
*   4. Add the first element
*      eg. multi_selector.addElement( document.getElementById( 'first_file_element' ) );
*
*   5. That's it.
*
*   You might (will) want to play around with the addListRow() method to make the output prettier.
*
*   You might also want to change the line
*       element.name = 'file_' + this.count;
*   ...to a naming convention that makes more sense to you.
*
* Licence:
*   Use this however/wherever you like, just don't blame me if it breaks anything.
*
* Credit:
*   If you're nice, you'll leave this bit:
*
*   Class by Stickman -- http://www.the-stickman.com
*      with thanks to:
*      [for Safari fixes]
*         Luis Torrefranca -- http://www.law.pitt.edu
*         and
*         Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com
*      [for duplicate name bug]
*         'neal'
*/
function MultiSelector( list_target, max ){

    // Where to write the list
    this.list_target = list_target;
    // How many elements?
    this.count = 0;
    // How many elements?
    this.id = 0;
    // Is there a maximum?
    if( max ){
        this.max = max;
    } else {
        this.max = -1;
    };
   
    /**
    * Add a new file input element
    */
    this.addElement = function( element ){

        // Make sure it's a file input element
        if( element.tagName == 'INPUT' && element.type == 'file' ){

            // Element name -- what number am I?
            element.name = 'file_' + this.id++;

            // Add reference to this object
            element.multi_selector = this;

            // What to do when a file is selected
            element.onchange = function(){

                // New file input
                var new_element = document.createElement( 'input' );
                new_element.type = 'file';

                // Add new element
                this.parentNode.insertBefore( new_element, this );

                // Apply 'update' to element
                this.multi_selector.addElement( new_element );

                // Update list
                this.multi_selector.addListRow( this );

                // Hide this: we can't use display:none because Safari doesn't like it
                this.style.position = 'absolute';
                this.style.left = '-1000px';

            };
            // If we've reached maximum number, disable input element
            if( this.max != -1 && this.count >= this.max ){
                element.disabled = true;
            };

            // File element counter
            this.count++;
            // Most recent element
            this.current_element = element;
           
        } else {
            // This can only be applied to file input elements!
            alert( 'Error: not a file input element' );
        };

    };

    /**
    * Add a new row to the list of files
    */
    this.addListRow = function( element ){

        // Row div
        var new_row = document.createElement( 'div' );

        // Delete button
        var new_row_button = document.createElement( 'input' );
        new_row_button.type = 'button';
        new_row_button.value = 'Delete';

        // References
        new_row.element = element;

        // Delete function
        new_row_button.onclick= function(){

            // Remove element from form
            this.parentNode.element.parentNode.removeChild( this.parentNode.element );

            // Remove this row from the list
            this.parentNode.parentNode.removeChild( this.parentNode );

            // Decrement counter
            this.parentNode.element.multi_selector.count--;

            // Re-enable input element (if it's disabled)
            this.parentNode.element.multi_selector.current_element.disabled = false;

            // Appease Safari
            //    without it Safari wants to reload the browser window
            //    which nixes your already queued uploads
            return false;
        };

        // Set row value
        new_row.innerHTML = element.value;

        // Add button
        new_row.appendChild( new_row_button );

        // Add it to the list
        this.list_target.appendChild( new_row );
       
    };

};
分享到:
评论

相关推荐

    Multiple File Upload - jQuery文件上传插件

    "Multiple File Upload - jQuery文件上传插件" 提供了一种高效且用户友好的解决方案,使得用户可以一次性上传多个文件,极大地提升了用户体验。下面将详细阐述这个插件的工作原理、主要特性以及使用方法。 首先,...

    jQuery Multiple File Upload Plugin+asp.net(c#)实现多文件上传

    jQuery Multiple File Upload Plugin是一个强大的JavaScript库,它提供了用户友好的界面,使得用户可以方便地选择并上传多个文件。同时,我们将结合后端的ASP.NET平台,使用C#语言处理这些上传的文件,确保数据的...

    multiple-file-upload

    总结来说,"multiple-file-upload"是关于使用jQuery和相关插件实现网页上的多文件上传功能。这个过程涉及到文件选择、队列管理、用户交互阻塞、以及可能的配置和样式自定义。了解和掌握这些技术将有助于开发者创建...

    JAVA|jQuery-File-Upload多文件上传及拖拽上传

    1. **多文件上传**:jQuery File Upload允许用户一次选择多个文件进行上传。在HTML部分,你可以使用`&lt;input type="file" multiple&gt;`来启用多选功能。在jQuery插件中,配置参数`singleFileUploads: false`可以使插件...

    一次性选择多文件上传multiple属性

    然而,对于不支持`multiple`属性的浏览器,如IE9及以下版本,开发者需要采用其他策略来实现多文件上传。一种常见的方法是使用Flash或Silverlight插件,或者利用JavaScript和Ajax技术模拟多文件选择和上传。例如,...

    js input file多个文件上传功能.zip

    在JavaScript(JS)中,实现一个输入元素`&lt;input type="file"&gt;`的多文件上传功能是一项常见的需求,尤其在Web开发中。这个"js input file多个文件上传功能.zip"包含了一个实现这一功能的代码示例,适用于图片和其他...

    文件上传插件(jQuery-File-Upload)

    多文件选择上传 jQuery-File-Upload 支持用户通过拖放或者文件选择框一次性选择多个文件进行上传,极大地提升了用户交互体验。这种功能利用了HTML5的`&lt;input type="file"&gt;`元素的`multiple`属性,使得用户可以在一...

    Spring MVC Multiple File Upload example

    在本文中,我们将深入探讨如何使用Spring MVC框架实现多文件上传功能。Spring MVC是Java Web开发中的一个强大组件,它提供了处理HTTP请求、包括文件上传在内的多种功能。在这个例子中,我们将关注如何处理用户通过...

    Flex multiple file uploader (Flex多文件上传范例)

    这个范例“Flex Multiple File Uploader”是利用Flex技术实现的一个支持多文件同时上传的功能组件。在Web应用中,多文件上传功能通常用于让用户能够一次性选择并上传多个文件,提高用户交互体验。 首先,我们要理解...

    html5文件上传插件Pure HTML5 file upload

    Pure HTML5 file upload插件就是基于File API开发的,它允许用户在不离开页面的情况下上传文件,并且支持多文件选择、拖放上传等功能。通过这个插件,开发者可以轻松地为网站添加高级的文件上传体验,提高用户体验。...

    bootstrap文件上传demo

    多选文件上传是通过HTML5的`multiple`属性来实现的,允许用户在文件选择对话框中选择多个文件。服务器端的处理逻辑需要适应这种情况,可能需要循环遍历`CommonsMultipartFile`对象列表,对每个文件进行处理。 至于...

    Vuejs文件上传组件多文件上传

    本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 首先,文件上传组件通常需要处理以下几个关键点: 1. **多文件选择**:用户可能...

    multiple-file-upload:ASP.NET MVC 4 中的多文件上传实现示例

    多文件上传 一个示例多文件上传实现。 要了解它是如何实现的,请查看示例文件夹。 一般信息 初始化 当运行multiple-file-upload.js ,它会将其自身附加到window对象作为window.MultipleFileUpload 。 要创建新的多...

    【JavaScript源代码】element-ui中el-upload多文件一次性上传的实现.docx

    `ref`用于在JavaScript中引用该组件,`multiple`启用多文件选择,`:limit`指定最多允许上传的文件数量,`action`定义上传的URL,`:on-preview`、`:on-change`、`:on-remove`、`:on-exceed`和`:file-list`等事件处理...

    Min.Net_.upload多文件上传

    在.NET开发环境中,"Min.Net_.upload多文件上传"是一个常见的功能需求,它涉及到了Web应用程序处理用户上传多个文件的能力。这个项目可能是一个简洁而高效的文件上传解决方案,旨在提高用户体验和服务器性能。以下是...

    jQuery-File-Upload

    1. **多文件上传**:jQuery File Upload 支持用户同时选取并上传多个文件,极大地提升了用户交互体验,尤其是在需要上传大量文件的场景下。 2. **取消与删除**:用户可以在上传过程中随时取消或删除选定的文件,...

    File Upload 6.00&nbsp;

    总的来说,File Upload 6.00是一个综合性的文件上传解决方案,结合了现代Web技术,如多文件选择、并发上传和前端文件管理,以及后端的CGI处理,旨在提供高效、易用的文件上传体验。对于开发者而言,深入理解这些技术...

    Upload上传多文件

    在IT行业中,多文件上传是一项常见的功能,尤其在网页应用中,用户可能需要一次上传多个图片、文档或者其他类型的文件。`jQuery File Upload` 是一个广泛使用的JavaScript库,它提供了便捷的方式来实现这一功能。本...

Global site tag (gtag.js) - Google Analytics