server.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. var qiniu = require("qiniu");
  2. var express = require("express");
  3. var util = require("util");
  4. var path = require("path")
  5. var request = require("request");
  6. var app = express();
  7. app.use(express.static(__dirname + "/"));
  8. var multiparty = require("multiparty");
  9. var fs=require('fs');
  10. var config=JSON.parse(fs.readFileSync(path.resolve(__dirname,"config.json")));
  11. var mac = new qiniu.auth.digest.Mac(config.AccessKey, config.SecretKey);
  12. var config2 = new qiniu.conf.Config();
  13. // 这里主要是为了用 node sdk 的 form 直传,结合 demo 中 form 方式来实现无刷新上传
  14. config2.zone = qiniu.zone.Zone_z2;
  15. var formUploader = new qiniu.form_up.FormUploader(config2);
  16. var putExtra = new qiniu.form_up.PutExtra();
  17. var options = {
  18. scope: config.Bucket,
  19. deleteAfterDays: 1,
  20. returnBody:
  21. '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}'
  22. };
  23. var putPolicy = new qiniu.rs.PutPolicy(options);
  24. var bucketManager = new qiniu.rs.BucketManager(mac, null);
  25. app.get("/api/uptoken", function(req, res, next) {
  26. var token = putPolicy.uploadToken(mac);
  27. res.header("Cache-Control", "max-age=0, private, must-revalidate");
  28. res.header("Pragma", "no-cache");
  29. res.header("Expires", 0);
  30. if (token) {
  31. res.json({
  32. uptoken: token,
  33. domain: config.Domain
  34. });
  35. }
  36. });
  37. app.post("/api/transfer", function(req, res) {
  38. var form = new multiparty.Form();
  39. form.parse(req, function(err, fields, files) {
  40. var path = files.file[0].path;
  41. var token = fields.token[0];
  42. var key = fields.key[0];
  43. formUploader.putFile(token, key, path, putExtra, function(
  44. respErr,
  45. respBody,
  46. respInfo
  47. ) {
  48. if (respErr) {
  49. console.log(respErr);
  50. throw respErr;
  51. }
  52. if (respInfo.statusCode == 200) {
  53. res.send('<script>window.parent.showRes('+JSON.stringify(respBody)+')</script>');
  54. } else {
  55. console.log(respInfo.statusCode);
  56. console.log(respBody);
  57. }
  58. });
  59. });
  60. });
  61. app.listen(config.Port, function() {
  62. console.log("Listening on port %d\n", config.Port);
  63. console.log(
  64. "▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽"
  65. );
  66. console.log(
  67. "△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n"
  68. );
  69. });