{"id":19675812,"url":"https://github.com/progerxp/filedrop","last_synced_at":"2025-10-03T22:36:47.961Z","repository":{"id":6963852,"uuid":"8216340","full_name":"ProgerXP/FileDrop","owner":"ProgerXP","description":"Self-contained cross-browser pure JavaScript class for Drag \u0026 Drop and AJAX (multi) file upload.","archived":false,"fork":false,"pushed_at":"2023-04-17T18:54:49.000Z","size":345,"stargazers_count":266,"open_issues_count":41,"forks_count":60,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-10-01T16:47:21.635Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"filedropjs.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProgerXP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-02-15T10:19:35.000Z","updated_at":"2025-06-10T14:08:25.000Z","dependencies_parsed_at":"2024-06-18T18:39:06.252Z","dependency_job_id":"fa00c9ce-30e5-4a78-8219-23b9883f9306","html_url":"https://github.com/ProgerXP/FileDrop","commit_stats":{"total_commits":45,"total_committers":3,"mean_commits":15.0,"dds":0.0444444444444444,"last_synced_commit":"e47c361bdb293518f9a6d30b80df8652253fcbb2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ProgerXP/FileDrop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FFileDrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FFileDrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FFileDrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FFileDrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProgerXP","download_url":"https://codeload.github.com/ProgerXP/FileDrop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProgerXP%2FFileDrop/sbom","scorecard":{"id":114480,"data":{"date":"2025-08-11","repo":{"name":"github.com/ProgerXP/FileDrop","commit":"e47c361bdb293518f9a6d30b80df8652253fcbb2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: The Unlicense: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T00:46:21.416Z","repository_id":6963852,"created_at":"2025-08-16T00:46:21.417Z","updated_at":"2025-08-16T00:46:21.417Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278239862,"owners_count":25954092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T17:25:59.040Z","updated_at":"2025-10-03T22:36:47.933Z","avatar_url":"https://github.com/ProgerXP.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FileDrop Revamped\n#### Self-contained cross-browser HTML5, legacy, AJAX, drag \u0026 drop JavaScript file upload\n\n**FileDrop** is a lightweight JavaScript class for easy-to-use file uploading that works out of the box and supports even most legacy browsers.\n\n[ [Documentation](http://filedropjs.org) | [Demo page](http://filedropjs.org/demo/) ]\n\n## Features\n\n* **Cross-browser** – supports Firefox 3.6, Internet Explorer 6, Google Chrome 7, Apple Safari 5 and Opera 11.61.\n* **No JS dependencies**, Flash or Java applets\n* 900 lines of code, 1300 lines of comments\n* **16 KiB minified**, 6 KiB gzipped\n* **HTML5, drag \u0026amp; drop** for modern browsers\n* **IFrame fallback** for legacy agents (IE 6+)\n* Flexible **event system** with over 15 callbacks\n* Multiple **independent FileDrops** on one page\n* Ready for **jQuery**, PHP, ASP.net and others\n* 500+ lines of **unit tests** ([tests.html](http://filedropjs.org/demo/tests.html))\n\n## Basic example\n\n[Live demo](http://filedropjs.org/demo/basic.html) →\n\n```HTML\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"utf-8\"\u003e\n    \u003ctitle\u003eBasic FileDrop example\u003c/title\u003e\n\n    \u003cscript type=\"text/javascript\" src=\"../filedrop.js\"\u003e\u003c/script\u003e\n    \u003cscript type=\"text/javascript\" src=\"filedrop.js\"\u003e\u003c/script\u003e\n\n    \u003cstyle type=\"text/css\"\u003e\n    /***\n      Styles below are only required if you're using \u003ciframe\u003e fallback in\n      addition to HTML5 drag \u0026 drop (only working in Firefox/Chrome).\n     ***/\n\n    /* Essential FileDrop zone element configuration: */\n    .fd-zone {\n      position: relative;\n      overflow: hidden;\n      /* The following are not required but create a pretty box: */\n      width: 15em;\n      margin: 0 auto;\n      text-align: center;\n    }\n\n    /* Hides \u003cinput type=\"file\"\u003e while simulating \"Browse\" button: */\n    .fd-file {\n      opacity: 0;\n      font-size: 118px;\n      position: absolute;\n      right: 0;\n      top: 0;\n      z-index: 1;\n      padding: 0;\n      margin: 0;\n      cursor: pointer;\n      filter: alpha(opacity=0);\n      font-family: sans-serif;\n    }\n\n    /* Provides visible feedback when use drags a file over the drop zone: */\n    .fd-zone.over { border-color: maroon; background: #eee; }\n    \u003c/style\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003cnoscript style=\"color: maroon\"\u003e\n      \u003ch2\u003eJavaScript is disabled in your browser. How do you expect FileDrop to work?\u003c/h2\u003e\n    \u003c/noscript\u003e\n\n    \u003ch2 style=\"text-align: center\"\u003e\n      \u003ca href=\"http://filedropjs.org\"\u003eFileDrop\u003c/a\u003e basic sample\n    \u003c/h2\u003e\n\n    \u003c!-- A FileDrop area. Can contain any text or elements, or be empty.\n         Can be of any HTML tag too, not necessary fieldset. --\u003e\n    \u003cfieldset id=\"zone\"\u003e\n      \u003clegend\u003eDrop a file inside\u0026hellip;\u003c/legend\u003e\n      \u003cp\u003eOr click here to \u003cem\u003eBrowse\u003c/em\u003e..\u003c/p\u003e\n\n      \u003c!-- Putting another element on top of file input so it overlays it\n           and user can interact with it freely. --\u003e\n      \u003cp style=\"z-index: 10; position: relative\"\u003e\n        \u003cinput type=\"checkbox\" id=\"multiple\"\u003e\n        \u003clabel for=\"multiple\"\u003eAllow multiple selection\u003c/label\u003e\n      \u003c/p\u003e\n    \u003c/fieldset\u003e\n\n    \u003cscript type=\"text/javascript\"\u003e\n      // Tell FileDrop we can deal with iframe uploads using this URL:\n      var options = {iframe: {url: 'upload.php'}};\n      // Attach FileDrop to an area ('zone' is an ID but you can also give a DOM node):\n      var zone = new FileDrop('zone', options);\n\n      // Do something when a user chooses or drops a file:\n      zone.event('send', function (files) {\n        // Depending on browser support files (FileList) might contain multiple items.\n        files.each(function (file) {\n          // React on successful AJAX upload:\n          file.event('done', function (xhr) {\n            // 'this' here points to fd.File instance that has triggered the event.\n            alert('Done uploading ' + this.name + ', response:\\n\\n' + xhr.responseText);\n          });\n\n          // Send the file:\n          file.sendTo('upload.php');\n        });\n      });\n\n      // React on successful iframe fallback upload (this is separate mechanism\n      // from proper AJAX upload hence another handler):\n      zone.event('iframeDone', function (xhr) {\n        alert('Done uploading via \u003ciframe\u003e, response:\\n\\n' + xhr.responseText);\n      });\n\n      // A bit of sugar - toggling multiple selection:\n      fd.addEvent(fd.byID('multiple'), 'change', function (e) {\n        zone.multiple(e.currentTarget || e.srcElement.checked);\n      });\n    \u003c/script\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n## jQuery integration\n\n FileDrop can be integrated with jQuery by simply calling the following method (once, after loading both FileDrop and jQuery): `fd.jQuery()`.\n\nDrop zone events are prefixed with **fd** while individual file events start with **file**. DOM node events are triggered before those assigned to `obj.on.XXX` arrays and if a node handler returns non-null value on’s events are skipped.\n\nNote that jQuery will prepend its own event object in front of FileDrop’s normal event arguments since they’re triggered as regular events of a DOM node. See extensive comments in the sources for more details and examples.\n\nMore information in the [documentation](http://filedropjs.org/#jquery) →\n\n```JS\nfd.jQuery();  // you can also pass an object like 'jQuery'.\n\n// Henceforth it's possible to access FileDrop as $().filedrop().\n$('\u003cdiv\u003e\u003cp\u003eDrop something here...\u003c/p\u003e\u003c/div\u003e')\n  .appendTo(document.body)\n  .filedrop()\n  // jQuery always passes event object as the first argument.\n  .on('fdsend', function (e, files) {\n    $.each(files, function (i, file) {\n      file.SendTo('upload.php');\n    });\n  })\n  .on('filedone', function (e, file) {\n    alert('Done uploading ' + file.name + ' on ' + this.tagName);\n  });\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogerxp%2Ffiledrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogerxp%2Ffiledrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogerxp%2Ffiledrop/lists"}