質問編集履歴

2

追記

2021/07/10 01:58

投稿

pecchan
pecchan

スコア592

test CHANGED
File without changes
test CHANGED
@@ -237,3 +237,27 @@
237
237
 
238
238
 
239
239
  ```
240
+
241
+
242
+
243
+
244
+
245
+ ####追記
246
+
247
+ 今さらながら、AWSの管理画面で画像を確認しました。
248
+
249
+ 画像のアクセス許可からアクセスコントロールリスト (ACL)を確認しました。
250
+
251
+
252
+
253
+ 問題の画像は、オブジェクトの読み込みが空白になってました。
254
+
255
+
256
+
257
+ コピー時に権限を与えてない?のが原因でしょうか?
258
+
259
+
260
+
261
+
262
+
263
+ ![イメージ説明](e17c57629e9ca543770e4e9b9be7d8e1.jpeg)

1

追記

2021/07/10 01:58

投稿

pecchan
pecchan

スコア592

test CHANGED
File without changes
test CHANGED
@@ -91,3 +91,149 @@
91
91
  分かる方教えていただけると幸いです。
92
92
 
93
93
  宜しくお願い致します。
94
+
95
+
96
+
97
+
98
+
99
+ #### 追記
100
+
101
+ 画像ファイルのコピーはバックエンド(rails)から行っておりますが、
102
+
103
+ 作成自体はフロントエンドから行っております。
104
+
105
+ これが関係してるでしょうか?
106
+
107
+ 以下に追記致します。
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ 画像の選択時にブラウザからダイレクトアップロードするようにしてます。
116
+
117
+ heroku公式のまんまですが。
118
+
119
+
120
+
121
+ ``` javascript
122
+
123
+
124
+
125
+ <script>
126
+
127
+ $(function() {
128
+
129
+ $('.directUpload').find("input:file").each(function(i, elem) {
130
+
131
+ var fileInput = $(elem);
132
+
133
+ var form = $(fileInput.parents('form:first'));
134
+
135
+ var submitButton = form.find('input[type="submit"]');
136
+
137
+ var progressBar = $("<div class='bar'></div>");
138
+
139
+ var barContainer = $("<div class='progress'></div>").append(progressBar);
140
+
141
+ fileInput.after(barContainer);
142
+
143
+ fileInput.fileupload({
144
+
145
+ fileInput: fileInput,
146
+
147
+ url: '<%= @s3_direct_post.url %>',
148
+
149
+ type: 'POST',
150
+
151
+ autoUpload: true,
152
+
153
+ formData: <%= @s3_direct_post.fields.to_json.html_safe %>,
154
+
155
+ paramName: 'file',
156
+
157
+ dataType: 'XML',
158
+
159
+ replaceFileInput: false,
160
+
161
+ progressall: function (e, data) {
162
+
163
+ var progress = parseInt(data.loaded / data.total * 100, 10);
164
+
165
+ progressBar.css('width', progress + '%')
166
+
167
+ },
168
+
169
+ start: function (e) {
170
+
171
+ submitButton.prop('disabled', true);
172
+
173
+
174
+
175
+ progressBar.
176
+
177
+ css('background', 'green').
178
+
179
+ css('display', 'block').
180
+
181
+ css('width', '0%').
182
+
183
+ text("Loading...");
184
+
185
+ },
186
+
187
+ done: function(e, data) {
188
+
189
+ submitButton.prop('disabled', false);
190
+
191
+ progressBar.text("Uploading done");
192
+
193
+
194
+
195
+ // extract key and generate URL from response
196
+
197
+ var key = $(data.jqXHR.responseXML).find("Key").text();
198
+
199
+ var url = '<%= @s3_direct_post.url %>/' + key;
200
+
201
+
202
+
203
+
204
+
205
+ // create hidden field
206
+
207
+ var input = $("<input />", { type:'hidden', name: fileInput.attr('name'), value: url })
208
+
209
+ form.append(input);
210
+
211
+ },
212
+
213
+ fail: function(e, data) {
214
+
215
+ submitButton.prop('disabled', false);
216
+
217
+
218
+
219
+ progressBar.
220
+
221
+ css("background", "red").
222
+
223
+ text("Failed");
224
+
225
+ }
226
+
227
+ });
228
+
229
+ });
230
+
231
+ });
232
+
233
+ </script>
234
+
235
+
236
+
237
+
238
+
239
+ ```