universal_s3_uploader 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: efd8713a674010b67e77f06adb16d6d20c4371c1
4
- data.tar.gz: e5d0210a75762e8a86249594178e15c72ee69944
3
+ metadata.gz: 5f3de3b3418998a1d58ed9cd4612a7a664abba28
4
+ data.tar.gz: 37537e2dd4809a839a41b7c1c8d5d4d367d0c38f
5
5
  SHA512:
6
- metadata.gz: 124273e15e959dbe3100eb64b2e0f57a870bfd02016e2cc67cb2a8be19cdfbd3ebe968a521696eb21fa082a12a58d19c760f4ba72cde37f119eafb2b6d1a5887
7
- data.tar.gz: 192650294590ae45b3bfa028efce9db97fcaa9a286dd20c4a8d73b55c59f2610f648f90c47062d1f71b9330302e82ef8a5c9dde66c0e1d896825e3789575a3a4
6
+ metadata.gz: ad78edcf06e8d0978589ebbf7c117d95850c4dd12695019ef46d6122e95032b046d866f4aec9c44728e4c353efe0da4ac9d36c6eea502c399dc72003ba2bee2d
7
+ data.tar.gz: e66014c7479e7e73e16eaaa40dbe92b82825dcd5fe2b8d1480e7713fcf8e58469dfb8174471f3a31e0a0468535e5c5b49b4280986594e915fbc93ab1764ce3bd
@@ -1,3 +1,3 @@
1
1
  module UniversalS3Uploader
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
@@ -79,7 +79,7 @@
79
79
 
80
80
  UniversalS3Uploader.prototype.initExternalInterface = function()
81
81
  {
82
- var elem = this.element;
82
+ var context = this;
83
83
  var flashObject = this.element.children('object.flash_uploader').get(0);
84
84
 
85
85
  var interval = setInterval(function()
@@ -88,8 +88,12 @@
88
88
  {
89
89
  clearInterval(interval);
90
90
 
91
- flashObject.sendDivId(elem.attr('id'));
92
- elem.children('div').each(function ()
91
+ flashObject.sendDivId(context.element.attr('id'));
92
+ if (context.options.size)
93
+ {
94
+ flashObject.sendSize(context.options.size);
95
+ }
96
+ context.element.children('div').each(function ()
93
97
  {
94
98
  flashObject.sendFormData(this.className, $(this).data('value'));
95
99
  });
@@ -108,8 +112,86 @@
108
112
  return false;
109
113
  };
110
114
 
115
+ UniversalS3Uploader.prototype.dataUrlToBlob = function(dataUrl)
116
+ {
117
+ var byteString = atob(dataUrl.split(',')[1]);
118
+ var ab = new ArrayBuffer(byteString.length);
119
+ var ia = new Uint8Array(ab);
120
+ var mimeString = dataUrl.split(',')[0].split(':')[1].split(';')[0];
121
+ for (var i = 0; i < byteString.length; i++) {
122
+ ia[i] = byteString.charCodeAt(i);
123
+ }
124
+ return new Blob([ab], { type: mimeString });
125
+ };
126
+
127
+ UniversalS3Uploader.prototype.resizeAndUpload = function(file, size)
128
+ {
129
+ var context = this;
130
+ var img = document.createElement("img");
131
+ img.src = window.URL.createObjectURL(file);
132
+ img.onload = function()
133
+ {
134
+ var postfix = size[0];
135
+ var width_desire = size[1];
136
+ var height_desire = size[2];
137
+
138
+ var width = img.width;
139
+ var height = img.height;
140
+
141
+ if (width_desire == -1 && height_desire == -1)
142
+ {
143
+ width_desire = width;
144
+ height_desire = height;
145
+ }
146
+ else if (width_desire == -1)
147
+ {
148
+ width_desire = width * height_desire / height;
149
+ }
150
+ else if (height_desire == -1)
151
+ {
152
+ height_desire = height * width_desire / width;
153
+ }
154
+
155
+ var canvas = document.createElement('canvas');
156
+ canvas.width = width_desire;
157
+ canvas.height = height_desire;
158
+ var ctx = canvas.getContext("2d");
159
+ ctx.drawImage(img, 0, 0, width_desire, height_desire);
160
+ var dataUrl = canvas.toDataURL("image/png");
161
+ var blob = context.dataUrlToBlob(dataUrl);
162
+
163
+ var fd = new FormData();
164
+ context.element.children('div').each(function()
165
+ {
166
+ if (this.className == 'key' && postfix)
167
+ {
168
+ var new_filename = file.name.replace(/(\.[^.]+)$/, '_' + postfix + "$1");
169
+ var key = $(this).data('value').replace(/\${filename}/, new_filename);
170
+ fd.append('key', key);
171
+ }
172
+ else
173
+ {
174
+ fd.append(this.className, $(this).data('value'));
175
+ }
176
+ });
177
+ fd.append('file', blob);
178
+
179
+ var xhr = new XMLHttpRequest();
180
+ xhr.open('POST', context.element.attr('action'), true);
181
+ xhr.send(fd);
182
+ };
183
+ };
184
+
111
185
  UniversalS3Uploader.prototype.upload = function(file, index)
112
186
  {
187
+ if (this.options.size)
188
+ {
189
+ for (var i = 0; i < this.options.size.length; i++)
190
+ {
191
+ this.resizeAndUpload(file, this.options.size[i]);
192
+ }
193
+ }
194
+
113
195
  var fd = new FormData();
114
196
  this.element.children('div').each(function()
115
197
  {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: universal_s3_uploader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dohan Kim