Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Dropzone is a JavaScript library that provides drag-and-drop file uploads with image previews. It is highly customizable and easy to integrate into web applications.
Basic File Upload
This code demonstrates how to create a basic Dropzone instance for file uploads. It specifies the URL to which files will be uploaded, the parameter name for the file, the maximum file size, and the accepted file types.
const Dropzone = require('dropzone');
// Create a Dropzone instance
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post',
paramName: 'file',
maxFilesize: 2, // MB
acceptedFiles: '.jpeg,.jpg,.png,.gif'
});
Custom Preview Template
This code demonstrates how to create a Dropzone instance with a custom preview template. The template defines the HTML structure for the file preview, including elements for the thumbnail, file name, file size, progress bar, and error/success messages.
const Dropzone = require('dropzone');
// Custom preview template
const previewTemplate = `
<div class="dz-preview dz-file-preview">
<div class="dz-image"><img data-dz-thumbnail /></div>
<div class="dz-details">
<div class="dz-size"><span data-dz-size></span></div>
<div class="dz-filename"><span data-dz-name></span></div>
</div>
<div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<div class="dz-success-mark"><span>✔</span></div>
<div class="dz-error-mark"><span>✘</span></div>
</div>
`;
// Create a Dropzone instance with custom preview template
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post',
previewTemplate: previewTemplate
});
Event Handling
This code demonstrates how to handle various events in Dropzone. It shows how to log messages when a file is added, track the upload progress, and handle successful uploads.
const Dropzone = require('dropzone');
// Create a Dropzone instance
const myDropzone = new Dropzone('#my-dropzone', {
url: '/file/post'
});
// Event handling
myDropzone.on('addedfile', function(file) {
console.log('File added:', file.name);
});
myDropzone.on('uploadprogress', function(file, progress) {
console.log('Upload progress:', progress);
});
myDropzone.on('success', function(file, response) {
console.log('File uploaded successfully:', response);
});
React Dropzone is a simple React component for creating a file dropzone. It provides a flexible and customizable way to handle file uploads in React applications. Compared to Dropzone, it is specifically designed for React and offers a more seamless integration with React's component-based architecture.
Fine Uploader is a JavaScript library for file uploads that supports multiple file selection, drag-and-drop, and image previews. It offers a wide range of customization options and supports various back-end technologies. Compared to Dropzone, Fine Uploader provides more advanced features and greater flexibility but may require more configuration.
Uppy is a modular file uploader for web applications. It supports drag-and-drop, file previews, and resumable uploads. Uppy is highly customizable and can be extended with various plugins. Compared to Dropzone, Uppy offers a more modern and modular approach to file uploads, making it suitable for complex use cases.
Dropzone is a JavaScript library that turns any HTML element into a dropzone. This means that a user can drag and drop a file onto it, and Dropzone will display file previews and upload progress, and handle the upload for you via XHR.
It's fully configurable, can be styled according to your needs and is trusted by thousands.
Install:
$ npm install --save dropzone
# or with yarn:
$ yarn add dropzone
Use as ES6 module (recommended):
import { Dropzone } from "dropzone";
const dropzone = new Dropzone("div#myId", { url: "/file/post" });
or use as CommonJS module:
const { Dropzone } = require("dropzone");
const dropzone = new Dropzone("div#myId", { url: "/file/post" });
👉 Checkout our example implementations for different bundlers
Use the standalone files like this:
<script src="https://unpkg.com/dropzone@5/dist/min/dropzone.min.js"></script>
<link
rel="stylesheet"
href="https://unpkg.com/dropzone@5/dist/min/dropzone.min.css"
type="text/css"
/>
<div class="my-dropzone"></div>
<script>
// Dropzone has been added as a global variable.
const dropzone = new Dropzone("div.my-dropzone", { url: "/file/post" });
</script>
src/options.js
for all available options⚠️ NOTE: We are currently moving away from IE support to make the library more lightweight. If you don't care about IE but about size, you can already opt into
6.0.0-beta.1
. Please make sure to pin the specific version since parts of the API might change slightly. You can always read about the changes in theCHANGELOG
file.
If you need support please use the discussions section or
stackoverflow with the dropzone.js
tag and not the GitHub issues
tracker. Only post an issue here if you think you discovered a bug.
If you have a feature request or want to discuss something, please use the discussions as well.
⚠️ Please read the contributing guidelines before you start working on Dropzone!
thumbnail(file, data)
and display the image wherever you likeSee LICENSE file
FAQs
Handles drag and drop of files for you.
The npm package dropzone receives a total of 426,650 weekly downloads. As such, dropzone popularity was classified as popular.
We found that dropzone demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.