En node.js, ¿cómo puedo generar un nombre de archivo temporal único, a la mkstemp(3)
? Quiero escribir atómicamente un archivo usando fs.rename
.nodejs - Nombre de archivo temporal
Respuesta
Sin necesidad de utilizar ningún tipo de plugins adicionales:
var crypto = require('crypto');
var fs = require('fs');
var filename = 'foo'+crypto.randomBytes(4).readUInt32LE(0)+'bar';
fs.writeFileSync(filename, 'baz');
EDIT: leer los comentarios.
¡Cuidado, este es un antipatrón clásico que es muy peligroso! Este tipo de código ha resultado en muchas vulnerabilidades a lo largo de los años, y es la razón exacta por la que se creó mkstemp para reemplazar mktemp. Para garantizar la seguridad, el archivo debe abrirse con los indicadores O_CREAT y O_EXCL para evitar que otro usuario prediga el nombre del archivo y cree un enlace simbólico antes de poder escribir en él. Supongo que si estás absolutamente seguro de que otro usuario no podría predecir el nombre de archivo en un millón de años, no es necesario, pero ¿por qué arriesgarse? http://en.wikipedia.org/wiki/Symlink_race – Geoff
No creo que haya suficiente entropía en ese nombre de archivo, saca 'foo1492796329bar' un SHA1 con una sal al azar sería mejor –
Josue, estoy de acuerdo con que 32 bits de la entropía es muy pequeña Sin embargo, 64 bits deberían ser suficientes para archivos de corta duración. ¿Por qué sugieres un hash si ya tenemos un valor aleatorio? –
Otro paquete popular es tmp.
Esta es la verdadera respuesta –
¿por qué es esta la verdadera respuesta? – cambecc
Por una vez, el paquete tmp es más popular actualmente. En segundo lugar, hay algunas ventajas menores documentadas en https://github.com/raszi/node-tmp/blob/master/README.md#about –
- 1. NodeJS readFile() recuperar el nombre de archivo
- 2. ¿Cómo obtener un nombre de archivo temporal?
- 3. ¿Cómo creo un nombre de archivo temporal en Erlang?
- 4. Guardar un archivo temporal
- 5. Pipe vs. archivo temporal
- 6. Descarga de archivo OpenXML sin archivo temporal
- 7. ¿Cómo se obtiene el nombre de archivo de un archivo temporal para usar en Linux?
- 8. Nodejs Pasaporte muestra el nombre de usuario
- 9. ¿Cómo crear un archivo temporal en Java sin el número aleatorio agregado al nombre de archivo?
- 10. error de hormiga No se puede cambiar el nombre del archivo anterior al archivo temporal
- 11. Carrierwave Archivo temporal sin modelo
- 12. Estructura de archivo de Mongoose & NodeJS Project
- 13. Error de extracción de Git: no se puede crear el nombre de archivo sha1 temporal
- 14. ¿Función o modismo de Lisp común para crear un nombre de archivo temporal?
- 15. cargando archivos que no tienen un nombre temporal
- 16. Extraer solo el nombre de archivo Del nombre de FileItem
- 17. Cómo crear un directorio temporal y recibe el nombre de ruta/archivo en Python
- 18. Parse archivo JSON grande en Nodejs
- 19. Crear archivo temporal y eliminar automáticamente
- 20. ¿Se puede crear el archivo temporal de flymake en el directorio temporal del sistema?
- 21. Obtener/abrir archivo temporal en .NET
- 22. ¿Cómo creo un archivo temporal con nombre en Windows en Python?
- 23. ¿Cómo se crea un archivo temporal con cacao? Hace
- 24. Requerir en nodejs
- 25. ¿Cómo exportar un archivo csv temporal generado dinámicamente?
- 26. ¿Dónde está el archivo de registro de nodejs?
- 27. ¿Cómo crear un std :: ofstream en un archivo temporal?
- 28. Nombre de clase y nombre de archivo
- 29. nodejs host del servidor
- 30. NodeJS Passport
Esto no es una recomendación de herramienta. Esto es cuestión de si existe una API. Quiero decir qué demonios, 90% de las preguntas sobre SO son sobre si existe alguna API para hacer algo. Ciérrelos todos o ninguno. –
Esta es una pregunta de recomendación de herramienta. Y tenemos un sitio para eso: http://softwarerecs.stackexchange.com/questions/34842/create-a-temporary-directory-in-node-js :-) –