upload.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. accessid = 'LTAI5tR6RRZmNb92xeWEdnZA';
  2. accesskey = 'vHG2vjEE9hCPtednFbd8xKt0owfp38';
  3. host = 'https://yqlguestdata.oss-cn-hangzhou.aliyuncs.com';
  4. g_dirname = ''
  5. g_object_name = ''
  6. g_object_name_type = ''
  7. now = timestamp = Date.parse(new Date()) / 1000;
  8. var policyText = {
  9. "expiration": "2030-01-01T12:00:00.000Z", //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
  10. "conditions": [
  11. ["content-length-range", 0, 1048576000] // 设置上传文件的大小限制 1gb
  12. ]
  13. };
  14. var policyBase64 = Base64.encode(JSON.stringify(policyText))
  15. message = policyBase64
  16. var bytes = Crypto.HMAC(Crypto.SHA1, message, accesskey, {asBytes: true});
  17. var signature = Crypto.util.bytesToBase64(bytes);
  18. function check_object_radio() {
  19. var tt = document.getElementsByName('myradio');
  20. for (var i = 0; i < tt.length; i++) {
  21. if (tt[i].checked) {
  22. g_object_name_type = tt[i].value;
  23. break;
  24. }
  25. }
  26. }
  27. function get_dirname(id) {
  28. dir = document.getElementById("dirname" + id).value;
  29. if (dir != '' && dir.indexOf('/') != dir.length - 1) {
  30. dir = dir + '/'
  31. }
  32. //alert(dir)
  33. g_dirname = dir
  34. }
  35. function random_string(len) {
  36. len = len || 32;
  37. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  38. var maxPos = chars.length;
  39. var pwd = '';
  40. for (i = 0; i < len; i++) {
  41. pwd += chars.charAt(Math.floor(Math.random() * maxPos));
  42. }
  43. return pwd;
  44. }
  45. function get_suffix(filename) {
  46. pos = filename.lastIndexOf('.')
  47. suffix = ''
  48. if (pos != -1) {
  49. suffix = filename.substring(pos)
  50. }
  51. return suffix;
  52. }
  53. function calculate_object_name(filename) {
  54. if (g_object_name_type == 'local_name') {
  55. g_object_name += "${filename}"
  56. } else if (g_object_name_type == 'random_name') {
  57. suffix = get_suffix(filename)
  58. g_object_name = g_dirname + random_string(10) + suffix
  59. }
  60. return ''
  61. }
  62. function get_uploaded_object_name(filename) {
  63. if (g_object_name_type == 'local_name') {
  64. tmp_name = g_object_name
  65. tmp_name = tmp_name.replace("${filename}", filename);
  66. return tmp_name
  67. } else if (g_object_name_type == 'random_name') {
  68. return g_object_name
  69. }
  70. }
  71. function set_upload_param(up, filename, ret) {
  72. g_object_name = g_dirname;
  73. if (filename != '') {
  74. suffix = get_suffix(filename)
  75. calculate_object_name(filename)
  76. }
  77. new_multipart_params = {
  78. 'key': g_object_name,
  79. 'policy': policyBase64,
  80. 'OSSAccessKeyId': accessid,
  81. 'success_action_status': '200', //让服务端返回200,不然,默认会返回204
  82. 'signature': signature,
  83. };
  84. up.setOption({
  85. 'url': host,
  86. 'multipart_params': new_multipart_params
  87. });
  88. up.start();
  89. }