Simple image host.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

image_create.node.js 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var fs = require("fs");
  2. module.exports = function(ctx) {
  3. ctx.getPostData(function(err, data, files) {
  4. if (err)
  5. return ctx.fail(err);
  6. if (!files.file)
  7. return ctx.fail("No file supplied.");
  8. data.collectionId = parseInt(data.collectionId);
  9. if (data.collectionId !== ctx.session.collectionId)
  10. return ctx.fail("You don't own that collection.");
  11. //We want all extensions to be lower case.
  12. data.extension = data.extension.toLowerCase();
  13. ctx.db.query(
  14. "INSERT INTO images (name, description, extension, collection_id) "+
  15. "VALUES ($1, $2, $3, $4) "+
  16. "RETURNING id",
  17. [data.name, data.description, data.extension, data.collectionId],
  18. queryCallback
  19. );
  20. });
  21. function queryCallback(err, res) {
  22. if (err)
  23. return ctx.fail(err);
  24. var id = res.rows[0].id;
  25. var file = ctx.postData.files.file;
  26. var readStream = fs.createReadStream(file.path);
  27. var writeStream = fs.createWriteStream(ctx.conf.dir.imgs+"/"+id);
  28. readStream.pipe(writeStream);
  29. readStream.on("end", function() {
  30. ctx.succeed({
  31. id: id
  32. });
  33. });
  34. }
  35. }