Guardar en PixelDrop Beta
Deja que quienes usan tu sitio o tu aplicación guarden un archivo directamente en su propio PixelDrop. Una etiqueta script, una llamada.
Beta: esta herramienta es nueva. Las opciones pueden cambiar y tus comentarios ayudan a darle forma. ¿Preguntas o ideas? Escribe a [email protected].
- Añadirlo
- Probarlo
- Elegir un archivo
- Lo que ve la persona
- Lo que recibe tu página
- Registrarse y obtener la insignia
- Recibir archivos en tu aplicación
Añadirlo
<script src="https://pixeldrop.ca/sdk.js"></script>
<button id="save">Save to PixelDrop</button>
<script>
document.getElementById("save").onclick = function () {
PixelDrop.save(myFileOrBlob, { name: "report.pdf" })
.then(function (saved) { console.log("saved", saved.id, saved.folder); })
.catch(function (err) { console.log("not saved:", err.code); });
};
</script>
Opciones: name (el nombre del archivo) y folder (por defecto el archivo va a una carpeta con el nombre de tu sitio; pasa un texto corto para nombrar la carpeta tú mismo, o false para guardarlo suelto entre los archivos de la persona).
Llama a PixelDrop.save() desde un clic: el navegador solo abre la ventana de PixelDrop por un clic. El archivo puede ser un File, un Blob o una función que devuelva uno (o una promesa).
Probarlo
Elige un archivo y pulsa el botón. Necesitas una cuenta de PixelDrop con Membre y tu cuenta de Pixeldrain conectada.
Dejar que elijan un archivo de su PixelDrop
PixelDrop.pick({ hours: 168 })
.then(function (file) { console.log(file.name, file.url); })
.catch(function (err) { console.log("not chosen:", err.code); });
Una ventana muestra a la persona sus propios archivos; elige uno (o varios con multiple: true). Tu aplicación recibe { id, name, size, url, expires_at }: un enlace al archivo que funciona hours horas (de 1 a 720, 168 por defecto). Nunca recibe el contenido del archivo salvo por ese enlace, ni nada más de la cuenta. Errores: popup_blocked, cancelled, not_member, no_files, failed.
Lo que ve la persona
Se abre una pequeña ventana de pixeldrop.ca. La persona inicia sesión si hace falta y lee: «tu-sitio.com quiere guardar un archivo en tu PixelDrop», con el nombre y el tamaño del archivo. Pulsa Guardar. El archivo va a su PixelDrop, en una carpeta con el nombre de tu sitio (puedes nombrar la carpeta tú mismo o guardarlo suelto). No se comparte nada con nadie.
El nombre del sitio lo da el navegador, no tu código, así que ninguna página puede hacerse pasar por otra. Las personas ven y quitan los sitios usados en Ajustes → Aplicaciones conectadas.
Lo que recibe tu página
PixelDrop.save() devuelve una promesa que se resuelve con { id, name, size, folder }. Tu página nunca recibe una clave, un token ni acceso a la cuenta: solo el resultado.
code del error | Significado |
|---|---|
popup_blocked | El navegador bloqueó la ventana. Llama a save() directamente desde un clic. |
cancelled | La persona cerró la ventana o pulsó Cancelar. |
not_member | Guardar desde otros sitios requiere PixelDrop Membre (la prueba gratuita cuenta). |
too_large | Sin la extensión de navegador de PixelDrop, no se pueden guardar archivos de más de 25 MB. Con ella, cualquier tamaño. |
failed | Cualquier otra cosa; err.message dice qué. |
- Funciona en cualquier sitio
https(y enlocalhostmientras desarrollas). - Con la extensión de navegador de PixelDrop, el archivo va directo del navegador al Pixeldrain de la persona, sin límite de tamaño. Sin ella, los archivos de hasta 25 MB pasan por el servidor de PixelDrop.
- La persona no paga nada extra y tú tampoco: PixelDrop no almacena nada, el archivo vive en su propia cuenta de Pixeldrain.
- En la ventana de confirmación la persona puede marcar «Permitir siempre que este sitio guarde aquí»: los guardados de tu sitio empiezan entonces solos tras una cuenta atrás de 3 segundos, con un botón Cancelar, hasta que quite tu sitio en Ajustes.
Registra tu aplicación y obtén la insignia «Verificada»
Un sitio no registrado aparece en la ventana como «Este sitio no está registrado en PixelDrop». Regístralo y la gente verá su nombre y, una vez revisado, una insignia verde ✓ Aplicación verificada.
- Inicia sesión y abre Ajustes → Para desarrolladores. Escribe el nombre de tu aplicación y la dirección de tu sitio (
https://tu-sitio.com). - PixelDrop te da una línea de texto. Publica un archivo de texto en
https://tu-sitio.com/.well-known/pixeldrop-verify.txtcon exactamente esa línea. - Pulsa Comprobar ahora. PixelDrop lee el archivo una vez, por https, sin seguir redirecciones. Cuando coincide, tu sitio queda comprobado y se muestra su nombre.
- Después revisamos la aplicación y la aprobamos: aparece la insignia. Puedes quitar tu aplicación cuando quieras.
Deja que la gente envíe archivos a tu aplicación
Una vez comprobado tu sitio, puedes añadir una dirección de recepción (Ajustes → Para desarrolladores). Las personas que ya han guardado desde tu sitio ven entonces tu aplicación en Enviar a… en cada archivo. Cuando la eligen, PixelDrop envía un pequeño mensaje JSON a tu dirección:
{ "event": "file.shared", "id": "…", "time": "2026-10-16T20:00:00Z",
"file": { "name": "report.pdf", "size": 1234, "sha256": "…", "url": "https://pixeldrop.ca/s/…" },
"expires_at": "…", "max_downloads": 3 }
El enlace funciona 24 horas y 3 descargas. El mensaje no dice nada de la persona: ni nombre, ni correo, ni cuenta. Está firmado para que sepas que viene de PixelDrop. La cabecera es X-PixelDrop-Signature: t=<segundos unix>,v1=<hex>, donde v1 es el HMAC-SHA256 de <t>.<cuerpo sin procesar> con tu secreto (se muestra en Ajustes). Compruébalo y rechaza una t de hace más de unos minutos. Responde con cualquier estado 2xx para aceptar; cualquier otra cosa le dice a la persona que la aplicación no aceptó el archivo.
const sig = req.headers["x-pixeldrop-signature"]; // t=...,v1=...
const [t, v1] = sig.split(",").map(x => x.split("=")[1]);
const ok = crypto.createHmac("sha256", SECRET).update(t + "." + rawBody).digest("hex") === v1
&& Math.abs(Date.now()/1000 - Number(t)) < 300;
La dirección debe estar en tu propio sitio (mismo host, https, sin puerto). PixelDrop la llama desde su servidor y nunca llega a direcciones privadas o internas.