Giter Club home page Giter Club logo

multifile's People

Contributors

bryant1410 avatar dependabot[bot] avatar dpmango avatar fyneworks avatar lianee avatar mick88 avatar micteu avatar mirabilos avatar reestyle-it avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multifile's Issues

Minimum File Size feature

I have been using this plugin for a couple years, and it has been great! ... this is not something i would call an issue as much as a request. i have need of a means of checking to make sure that an image being uploaded is at least a minimum size ;) ... i know there is validation for maximum size, and i was wondering if there was a means of validating a min-size? thank you!

How to display the Remove link after the filename

I'd like to display the filename on the left, and the remove icon on the right. I've set a custom remove icon using the Remove string, and I've set a custom file string (including an icon) with the File string. But the remove icon shows to the left of the filename, I'd like to have it displayed on the right.

Is this possible?

bug - remove last item from list

if you remove the last item from list the MultiFile object will also removed
after that adding new items to the list , it doesn't work anymore

on the demo-page you can test it

  • add one item to the list
  • push upload-button -> one element
  • add another item to the list
  • push upload button -> empty

How to validate the format of the filename?

Hi,
I need to validate the format of the file name, eg only accept names in the following format:

xxxxxx-O.jpg
xxxxxx-O.gif
...

where files extensions is validate with the key "accept" in the instance options.

thanks in advance.

total_size does not reduce when files removed

If you add files the size increases, but the size never decreases when files are removed. console.log of the passed objects to the events will verify that the size does not change when removing files.

I imagine this might tie in with what was being said in #3 about removing and re-adding files. This has been produced and reproduced in Version 37.0.2062.124 m of Chrome.

Use JavaScript to submit

I am using C# MVC and I wanted to return Json back to the view if the file was successful uploading.
I am having troubles getting this to work. If I add a JavaScript later preventing default, it sends null to my upload function. Is there a way to do this?

I wanted to do something that looks like this:

$("#attachBtn").on("click", function (e) {
        e.preventDefault();
        const frm = $("#attachFiles");
        $.post(frm.attr("action"), frm.serialize(), function(data) {
            if (data.success) {
                $("#alertMessage").addClass("alert-success");
                $("#alertMessage #alertMessageText").text(data.message);
            } else {
                $("#alertMessage").addClass("alert-danger");
                $("#alertMessage #alertMessageText").text(data.message);
            }
 });

Adding a File

Hi

I am using MultiFile Js For Multiple File Upload.

First I have added 3 files using file control

  1. one.txt
  2. two.txt
  3. three.txt
    and stored in Database

Now I want to update the Files
In this option i am retrieving the binary data and file name from database.
How to append this stream data files to file control using Multifile js
So that i can remove one or more files
Also i can add some more files to it
After all i will save to Database.

It is possible or not??

Please help me in this

Thanks & Regards
Praveen

Changing options after initialization

Hi,

I'm trying to set the max number of files dynamically based on a count of existing images.

I've tried to set the max with this $.fn.MultiFile.options.max = 1; but it's not working at all.

Any insight on this would be appreciated.

populate the object

Hello,

First let me say.. GREAT WORK, GOOD IDEEA!

I am trying to use the script when I am editing an article and I can't figure how to populate the list with my existing images.
Can I send an array to the object in order to populate the list? (if yes, how?)

I am trying to get something similar with the picture attached when I edit an article.
http://i.imgur.com/WaytyPG.jpg

Thank you and hope you can help.
I was able to put it together with sortable :)

Way to trigger select file

Need some way to trigger select file dialog.
For example if you want apply some CSS styles to button that triggers file select, one way is to $(".file").click() while click on it but it will trigger select on all added inputs with the same class.
You can just add some class for current visible input. Now there is no way to identify visible input.
They have different IDs but how to get ID of visible input?

How to add checkboxes before each of images?

I use this plugin but when I choose file and click ok. All file was moved to div "file_list" which I created. However, Only a checkbox for all files, so, how can I add a checkbox before each of images? Thank you.

shorten the lengthy label name using substring or substr in jQuery MultiFile

using substr or substring I'm trying to shorten the lengthy label name in files listing in that plugin

this is a ordinary working example jsFiddle that I created using both substring and substr

in above plugin this is the place there binding label names to that files list

// Add a new file to the list
            MultiFile.addToList = function (slave, slave_count, files) {
                //if(window.console) console.log('MultiFile.addToList',slave_count);

                //# Trigger Event! onFileAppend
                MultiFile.trigger('FileAppend', slave, MultiFile, files);
                //# End Event!

                var names = $('<span/>');
                $.each(files, function (i, file) {
                    var v = String(file.name || ''),
                            S = MultiFile.STRING,
                            n = S.label || S.file || S.name,
                            t = S.title || S.tooltip || S.selected,
                            p = '<img class="MultiFile-preview" style="' + MultiFile.previewCss + '"/>',
                            label = $(
                                    (
                                        '<span class="MultiFile-label" title="' + t + '">' +
                                            '<span class="MultiFile-title">' + n + '</span>' +
                                            (MultiFile.preview || $(slave).is('.with-preview') ? p : '') +
                                        '</span>'
                                    )

So I tried to change above label bind using ternary if operator like follows

// Add a new file to the list
            MultiFile.addToList = function (slave, slave_count, files) {
                //if(window.console) console.log('MultiFile.addToList',slave_count);

                //# Trigger Event! onFileAppend
                MultiFile.trigger('FileAppend', slave, MultiFile, files);
                //# End Event!

                var names = $('<span/>');
                $.each(files, function (i, file) {
                    var v = String(file.name || ''),
                            S = MultiFile.STRING,
                            n = S.label || S.file || S.name,
                            t = S.title || S.tooltip || S.selected,
                            p = '<img class="MultiFile-preview" style="' + MultiFile.previewCss + '"/>',
                            label = $(
                                    (
                                        '<span class="MultiFile-label" title="' + t + '">' +
                                            '<span class="MultiFile-title">' + n.length > 30 ? n.substring(0, 30) + ".." : n + '</span>' +
                                            (MultiFile.preview || $(slave).is('.with-preview') ? p : '') +
                                        '</span>'
                                    )

changed line n.length > 30 ? n.substring(0, 30) + ".." : n

when I add that files not listing properly, how can I make this correct ?

Id attribute misuse with generated wrapper div.

HTML

<label for="uploadInput">Add Files</label>
<input id="uploadInput" type="file" multiple class="multi with-preview"></input>

CSS

#uploadInput {
   width: 0.1px;
   height: 0.1px;
   opacity: 0;
   overflow: hidden;
   position: absolute;
   z-index: -1;
}

This is a method allowing for the user to click the label and activate the corresponding input. Inputs are not style-able and this allows working-around that.

From what I can tell this plugin breaks the possibility of doing this (and uses id attributes incorrectly) by copying the id from the input and applying it to a generated container element as shown below.

<label for="uploadInput">Add Files</label>
<div class="MultiFile-wrap" id="uploadInput">
   <input id="uploadInput" type="file"></input>
</div>

Besides the fact that this breaks the for attribute pairing, if I'm correct id attributes are supposed to always be unique (never the same thing twice).

I'm going to look in there and try to find where this is happening and why, but thought I'd go ahead and open an issue up here. Thoughts?

Firefox Duplicating file input

Using Firefox, When select the second file for upload, the input file gets duplicated, the same happens on IE9.

Google Chrome works fine.

I attached one image for better view.

Documents

I am looking the document for the options in MultiFile. So far the only problem I have encountered has been the key/value pair is missing the key. Is there an option that includes the key?

Images preview

I read the documentation and tried to make some changes, but it still fails, I would like to know how do I display a preview of the selected pictures

Multilingual support doesn't seem to work

Hi!
Thank you for a great plugin. It works very well, except for the multilingual support and file list customization (both using the STRING property). I get the same behavior in your examples. Is there something wrong with my setup?

Tested on IE11 and Firefox ver37.

Regards
Bjørn Terje Svennes

Backbone + MultiFile

Lots of random issues with MultiFile + Backbone Views, more specifically MultiFile is unable to append the list of files to the element in the current view. Will try to fork this project and add a fix to this myself.

option STRING ignored

setup MultiFile

$jq('#inputmultifile').MultiFile({ 
            STRING: {
             remove: '<span class="multifileicon ui-icon ui-icon-closethick" title="zum entfernen klicken"></span>'
            },
.....

initialising multifile remove is overwritten by default

MultiFile.STRING = $.extend(MultiFile.STRING || {}, $.fn.MultiFile.options.STRING, MultiFile.STRING);

this works

MultiFile.STRING = $.extend({}, $.fn.MultiFile.options.STRING, MultiFile.STRING);

maxlength attribute and namespaces

Hi,

Great work, just what I needed!

Using it along with other utilities (as it is intended to), I faced a name clash:

The "maxlength" attribute is a standard HTML5 attribute to specify the maximum number of characters allowed in an element.
Granted, this should apply only to type text inputs, but this triggers some validation plugs (at least formvalidation.io), leading to unexpected results for a file input field.

Perhaps this attribute should be renamed data-maxlength (just like data-maxsize and data-maxfile) to avoid confusion.

Or as this utility is designed to be unobtrusive and work nicely with other utilities, perhaps its own namespace for attributes would be nice, something like data-mf-...

Changing the file name

Hello.
I'm trying to change the name of the file uploaded.
I have changed the code in jquery.Multifile.js on the line 169 to always setting the file name to "something.jpg", but didn't work.
Anybody can help me?

Here is the code:

166   // set file name
167   file.name = " something.jpg";
168   // execute function in element's context, so 'this' variable is current element
169   rv = handler.apply(MultiFile.wrapper, [element, file.name, MultiFile, file]);

Formatting of list of several files added together

Hi,

thanks for your work, it is very useful.

If I am not mistaken, line 488 in jquery.MultiFile.js should be

if(i>0) names.append(', ');

(rather than i>1). As it is now, between the first and second entries there is no comma, if multiple files are selected together.

Ulrich

Removing commas(,) or wrap the commans

Thanks for the file control can you please help me to remove the (,) commas or hide them, can't execute or manipulative with DOM that fails the file upload feature. Im using Angular js to save data

Thanks in advance

Remove button for each file

Currently there is no remove button for each file,

If i select 3 files all 3 files are bundled with single cross arrow which should not be the case.

multiple forced on input if max > 1

Because of this code

if(o.max>1) MultiFile.E.attr('multiple','multiple').prop('multiple',true);

multiple-attribute is forced on input even if I am not interested in selecting more than one file at a time but still wants to enable uploading multiple files. My best guess would be to remove the line and let users manually put multiple on input-field if needed.

Drag and Drop feature

Is there any drag drop feature available for this plugin? or any way to integrate with other drag drop plugin?

multiple files select on single select with remove icon in Jquery MultiFile

I using this jquery multifile plugin, according to that we can select only one file at a time,

this is file input attribute of that
<input type="file" name="files" class="multi" onchange="return Plugins.handleFileSelect(this);"/>

Since I'm trying to select multiple files that can list each file with remove(X) icon at a time so I changed above input attribute like this

<input type="file" name="files" class="multi" onchange="return Plugins.handleFileSelect(this);" multiple="multiple"/>

Now I can select multiple files, but its not listing files with Remove("X") Icon

if I attached 2 files this is the view with inspect elements

https://i.stack.imgur.com/uzpsx.png

but its not listing two remove icons for each file in multiple file select

Maximum filesize documentation error?

  $('.inputfile').MultiFile({
    max: 5,
    accept: 'jpg|png|gif|jpeg',
    list: '.inputfile-list',
    max_size: 2048,
  });

I found out that $.fn.MultiFile.options have maxsize option only.

So, when I swtiched from max_size (as on documentation page) to maxsize - I works.
Is it a typo or Im usuing it in a wrong way?

dynamically create input file element in jQuery MultiFile plugin

I'm trying to generate this file input dynamically

So I tried to append this once "click here" button click happens like follows

 <button type="button" id="ifile">click here</button>             
 <div id="target_div"></div> 

<script type="text/javascript">

    $('#ifile').click(function () {
        // when the add file button is clicked append
        // a new <input type="file" name="someName" />
        // to a target_div div
        $('#target_div').append(
            $('<input/>').attr('type', "file").attr('name', "file").attr('id', "someName").attr('class', "multi").attr('onchange', "return Plugins.handleFileSelect(this);")
        );
    });
</script>

but once I do this its generating ordinary file input but its not listing files properly

once I open inspect elements I can see a view like following

https://i.stack.imgur.com/noNpY.png

how can I generate multi input dynamically

Check Filesize BUG

Dear Frind,
I was look for a upload tool that can mulit post and check the filesizs before
post to the server.
When test with your demo! Everything is ok but a bug at "Validating Sizes" .
Here is the step i do:
step 1:choose a file (less than 1M)
step 2:remove it
step 3:choose another file(less than 1M)
and then error occored Message "The File selected exceed the maximum size permited(1.3Mb>1024Kb)"

input field style

Hello!

I want to change the style of the input field like that.
I have added a wrap:
slave.addClass('MultiFile-applied').wrap("<span class='btn-wrapper'></span>");
but next input field appears in the previous wrap:
<span class='btn-wrapper'><input ...> <span class='btn-wrapper'><input ...> </span> </span>
How can I add a new file field after the previous wrapped file field?
<span class='btn-wrapper'><input ...></span> <span class='btn-wrapper'><input ...></span>

Group of files added as a list

Hi,

When we select group of files, on the UI, it is shown as a list. Out of the selected files if I have to delete a single file; it is not possible. We have to delete the complete list and then add.

Can this be done?

Thanks,
Santosh

IE8 - 'console' is undefined

In IE8 if I try to add a forbidden file type the script fails with 'console' is undefined. This seems to be due to:

        if(console) console.log(s);

Should this be

        if(typeof console != 'undefined') console.log(s);

?

Issue with fileupload list

Hi all,
im new to the github..i want one help in my project . i need to delete each file which is seleceted while uploading.now i can delete all files in single click but i want to delete each and every file individually.
this file is part of the jquery.multifile.js.
thanks....

MultiFile.addToList = function (slave, slave_count, files) {
//if(window.console) console.log('MultiFile.addToList',slave_count);

                //# Trigger Event! onFileAppend
                MultiFile.trigger('FileAppend', slave, MultiFile, files);
                //# End Event!

                var names = $('<span/>');
                $.each(files, function (i, file) {
                    var v = String(file.name || '' ),
                            S = MultiFile.STRING,
                            n = S.label || S.file || S.name,
                            t = S.title || S.tooltip || S.selected,
                            p = '<img class="MultiFile-preview" style="'+ MultiFile.previewCss+' display:none;"/>',
                            label = $(
                                    (
                                        '<span class="MultiFile-label" title="' + t + '">'+
                                            '<span class="MultiFile-title">'+ n +'</span>'+
                                            (MultiFile.preview || $(slave).is('.with-preview') ? p : '' )+
                                        '</span>'
                                    )
                                    .replace(/\$(file|name)/gi, (v.match(/[^\/\\]+$/gi)||[v])[0])
                                    .replace(/\$(ext|extension|type)/gi, (v.match(/[^\.]+$/gi)||[''])[0])
                                    .replace(/\$(size)/gi, sl(file.size || 0))
                                    .replace(/\$(preview)/gi, p)
                            );

                    // now supports preview. Just add an image with class preview to the "file" string
                    label.find('img.MultiFile-preview').each(function(){
                        var t = this;
                        var oFReader = new FileReader();
                        oFReader.readAsDataURL(file);
                        oFReader.onload = function (oFREvent) {
                            t.src = oFREvent.target.result;
                        };
                    });

                    // append file label to list
                    if(i>1) names.append(', ');
                    names.append(label);

                });

                //$.each(files, function (i, file) {
                    // Create label elements
                    var
                        r = $('<div class="MultiFile-label"></div>'),
                        b = $('<a class="MultiFile-remove" href="#' + MultiFile.wrapID + '">' + MultiFile.STRING.remove + '</a>')
                            .click(function () {

                                //# Trigger Event! onFileRemove
                                MultiFile.trigger('FileRemove', slave, MultiFile, files);
                                //# End Event!

                                MultiFile.n--;
                                MultiFile.current.disabled = false;

                                // Remove element, remove label, point to current
                                MultiFile.slaves[slave_count] = null;
                                $(slave).remove();
                                $(this).parent().remove();

                                // Show most current element again (move into view) and clear selection
                                $(MultiFile.current).css({
                                    position: '',
                                    top: ''
                                });
                                $(MultiFile.current).reset().val('').attr('value', '')[0].value = '';

                                // rebuild array with the files that are left.
                                var newfs = [];
                                for (var x in MultiFile.slaves) {
                                    var f = MultiFile.slaves[x];
                                    if(f!=null && f!=undefined){
                                        var files = ((f.files&&f.files.length) ? f.files : null) || [{
                                                    name: this.value,
                                                    size: 0,
                                                    type: ((this.value || '').match(/[^\.]+$/i) || [''])[0]
                                                }];
                                        // make a normal array
                                        $.each(files, function (i, file) {
                                            if(file.name!=undefined)
                                                newfs[newfs.length] = file;
                                        });
                                    };
                                };
                                MultiFile.files = newfs;

                                //# Trigger Event! afterFileRemove
                                MultiFile.trigger('afterFileRemove', slave, MultiFile, files);
                                //# End Event!

                                //# Trigger Event! onFileChange
                                MultiFile.trigger('FileChange', slave, MultiFile, MultiFile.files);
                                //# End Event!

                                return false;
                            });

                    // Insert label
                    MultiFile.list.append(
                        r.append(b, ' ', names)
                    );

                //}); // each file?

                //# Trigger Event! afterFileAppend
                MultiFile.trigger('afterFileAppend', slave, MultiFile, files);
                //# End Event!

                //# Trigger Event! onFileChange
                MultiFile.trigger('FileChange', slave, MultiFile, MultiFile.files);
                //# End Event!

            }; // MultiFile.addToList
            // Add element to selected files list



            // Bind functionality to the first element
            if (!MultiFile.MultiFile) MultiFile.addSlave(MultiFile.e, 0);

            // Increment control count
            //MultiFile.I++; // using window.MultiFile
            MultiFile.n++;

            // Save control to element
            MultiFile.E.data('MultiFile', MultiFile);


            //#####################################################################
            // MAIN PLUGIN FUNCTIONALITY - END
            //#####################################################################
        }); // each element
};

removing an item resets my custom "top" and "position"

When I remove a file, the script resets the "top" and "position" css-properties to empty. So if the original input had custom top/position specified - it is lost after removing. You should probably back them up and restore on remove.

Files with <script> in their name break the plugin

adding a file named <script>alert('test') breaks multifile with Uncaught SyntaxError: Invalid regular expression flags. A file named <script>alert('test')<:script> fails with Uncaught SyntaxError: Unexpected token :.

wrapper to hold our file list

can you populates the file list wrapper in a custom element too?
(same like wrapper for the list)

// Create wrapper to hold our file list
MultiFile.wrapID = MultiFile.instanceKey + '_wrap'; // Wrapper ID?
MultiFile.E.wrap('<div class="MultiFile-wrap" id="' + MultiFile.wrapID + '"></div>');
MultiFile.wrapper = $('#' + MultiFile.wrapID + '');

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.