server.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. // 上传策略设置文件过期时间,正式环境中要谨慎使用,文件在存储空间保存一天后删除
  20. deleteAfterDays: 1,
  21. returnBody:
  22. '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}'
  23. };
  24. var putPolicy = new qiniu.rs.PutPolicy(options);
  25. var bucketManager = new qiniu.rs.BucketManager(mac, null);
  26. app.get("/api/uptoken", function(req, res, next) {
  27. var token = putPolicy.uploadToken(mac);
  28. res.header("Cache-Control", "max-age=0, private, must-revalidate");
  29. res.header("Pragma", "no-cache");
  30. res.header("Expires", 0);
  31. if (token) {
  32. res.json({
  33. uptoken: token,
  34. domain: config.Domain
  35. });
  36. }
  37. });
  38. app.post("/api/transfer", function(req, res) {
  39. var form = new multiparty.Form();
  40. form.parse(req, function(err, fields, files) {
  41. var path = files.file[0].path;
  42. var token = fields.token[0];
  43. var key = fields.key[0];
  44. formUploader.putFile(token, key, path, putExtra, function(
  45. respErr,
  46. respBody,
  47. respInfo
  48. ) {
  49. if (respErr) {
  50. console.log(respErr);
  51. throw respErr;
  52. }
  53. if (respInfo.statusCode == 200) {
  54. res.send('<script>window.parent.showRes('+JSON.stringify(respBody)+')</script>');
  55. } else {
  56. console.log(respInfo.statusCode);
  57. console.log(respBody);
  58. }
  59. });
  60. });
  61. });
  62. app.listen(config.Port, function() {
  63. console.log("Listening on port %d\n", config.Port);
  64. console.log(
  65. "▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ Demos ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽ ▽"
  66. );
  67. console.log(
  68. "△ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △ △\n"
  69. );
  70. });