質問編集履歴
8
情報の修正
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -204,9 +204,6 @@
|
|
|
204
204
|
# 一時ファイルを作る
|
|
205
205
|
Tempfile.open(["tempProductImageFile", ext]) do |t|
|
|
206
206
|
entry.extract(t.path) { true }
|
|
207
|
-
p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
208
|
-
p xxxxx
|
|
209
|
-
p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
210
207
|
@product.send("products_image#{num}=", t)
|
|
211
208
|
end
|
|
212
209
|
end
|
7
情報の追加
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -168,4 +168,47 @@
|
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
何が原因なのかわかりません。そもそもzipファイル内のファイルを意図した順番で並べることが不可能なのでしょうか?
|
|
171
|
-
なにかご教示いただけることがあれば、何卒よろしくお願いいたします。
|
|
171
|
+
なにかご教示いただけることがあれば、何卒よろしくお願いいたします。
|
|
172
|
+
|
|
173
|
+
##追記
|
|
174
|
+
zip.each do |entry|の中でencodingのコードを追加しましたが、問題点に変化がありません。
|
|
175
|
+
|
|
176
|
+
```ruby
|
|
177
|
+
Zip::File.open(zipfile.path) do |zip|
|
|
178
|
+
num = 0
|
|
179
|
+
zip.each do |entry|
|
|
180
|
+
unless entry.name.valid_encoding?
|
|
181
|
+
entry.name.force_encoding case NKF.guess(entry.name)
|
|
182
|
+
when NKF::EUC then 'euc-jp'
|
|
183
|
+
when NKF::SJIS then 'cp932'
|
|
184
|
+
when NKF::UTF8 then 'utf-8'
|
|
185
|
+
when NKF::UTF16 then 'utf-16'
|
|
186
|
+
when Encoding::EUCJP_MS then Encoding::EUCJP_MS
|
|
187
|
+
when Encoding::CP51932 then Encoding::CP51932
|
|
188
|
+
when Encoding::WINDOWS_31J then Encoding::WINDOWS_31J
|
|
189
|
+
else
|
|
190
|
+
# JISコードもしくは不明
|
|
191
|
+
raise "文字コードが想定外です"
|
|
192
|
+
end
|
|
193
|
+
entry.name.encode! 'utf-8'
|
|
194
|
+
end
|
|
195
|
+
ext = File.extname(entry.name) #拡張子を取得
|
|
196
|
+
# 隠しファイルやゴミファイルは飛ばす
|
|
197
|
+
next if ext.blank? || File.basename(entry.name).count(".") > 1
|
|
198
|
+
|
|
199
|
+
num += 1
|
|
200
|
+
if num > 30 then
|
|
201
|
+
break
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# 一時ファイルを作る
|
|
205
|
+
Tempfile.open(["tempProductImageFile", ext]) do |t|
|
|
206
|
+
entry.extract(t.path) { true }
|
|
207
|
+
p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
208
|
+
p xxxxx
|
|
209
|
+
p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
210
|
+
@product.send("products_image#{num}=", t)
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
```
|
6
不足があったため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
Rails 4.2.6
|
|
7
7
|
rubyzip (1.2.2)
|
|
8
8
|
|
|
9
|
+
##試したこと
|
|
10
|
+
|
|
9
11
|
zipファイル内にはフォルダが5つあり、それぞれフォルダ名を「1」「2」「3」「4」「5」にしています。理由は、このフォルダの番号順にレコードを作成したいからです。
|
|
10
12
|
ちなみにフォルダ1に入っているファイルは1つ、フォルダ2に入っているファイルも1つ、フォルダ3からフォルダ5までに入っているファイルは複数あります。
|
|
11
13
|
|
5
情報に不足があったため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
フォームでzipファイルを入れて送信するとコントローラで解凍し、中に入っていたファイルをproducts_image1 ~ products_image30カラムに格納する機能を作っています。
|
|
2
2
|
|
|
3
|
+
##環境
|
|
4
|
+
macOS High Sierra(バージョン10.13.6)
|
|
5
|
+
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin17]
|
|
6
|
+
Rails 4.2.6
|
|
7
|
+
rubyzip (1.2.2)
|
|
8
|
+
|
|
3
9
|
zipファイル内にはフォルダが5つあり、それぞれフォルダ名を「1」「2」「3」「4」「5」にしています。理由は、このフォルダの番号順にレコードを作成したいからです。
|
|
4
10
|
ちなみにフォルダ1に入っているファイルは1つ、フォルダ2に入っているファイルも1つ、フォルダ3からフォルダ5までに入っているファイルは複数あります。
|
|
5
11
|
|
4
誤まった文法を修正するため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
*このアクション自体は成功しますが、意図した順番とはちがいます。
|
|
155
155
|
|
|
156
156
|
##問題点
|
|
157
|
-
1. UTF-8にするコードを書いてい
|
|
157
|
+
1. UTF-8にするコードを書いているが文字化けしている
|
|
158
158
|
2. 呼び出される順番がimages/1のファイル → images/1 → images/4のファイル → images/4 といったように、意図した順番にならない
|
|
159
159
|
3. images/5もimages/5内にあるファイルも呼ばれていない(実際には格納されている)
|
|
160
160
|
|
3
不足を補うため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
152
152
|
|
|
153
153
|
```
|
|
154
|
-
*このアクション自体は成功します。
|
|
154
|
+
*このアクション自体は成功しますが、意図した順番とはちがいます。
|
|
155
155
|
|
|
156
156
|
##問題点
|
|
157
157
|
1. UTF-8にするコードを書いていますが文字化けしている
|
2
誤りの修正のため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
rails s でログを見てみると、
|
|
46
46
|
```ここに言語を入力
|
|
47
47
|
"1111111111111111111111111111111"
|
|
48
|
-
#<ActionDispatch::Http::UploadedFile:0x007fbfa9b5e440 @tempfile=#<Tempfile:/var/folders/zx/41df886555n2m1gp6mqb0kkh0000gn/T/RackMultipart20181221-75747-1in4i5x.zip>, @original_filename="images.zip", @content_type="application/zip", @headers="Content-Disposition: form-data; name=\"product[
|
|
48
|
+
#<ActionDispatch::Http::UploadedFile:0x007fbfa9b5e440 @tempfile=#<Tempfile:/var/folders/zx/41df886555n2m1gp6mqb0kkh0000gn/T/RackMultipart20181221-75747-1in4i5x.zip>, @original_filename="images.zip", @content_type="application/zip", @headers="Content-Disposition: form-data; name=\"product[zip]\"; filename=\"images.zip\"\r\nContent-Type: application/zip\r\n">
|
|
49
49
|
"1111111111111111111111111111111"
|
|
50
50
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
51
51
|
"images/1/?n?C?g???W?????[_ _?O??-2.jpg"
|
1
不足があったため
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
|
+
end
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
以上のコードを実行して、実際に画像ファイルを見ると、zipファイルを作った時の順番ではありませんでした。
|
|
@@ -150,10 +151,10 @@
|
|
|
150
151
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
151
152
|
|
|
152
153
|
```
|
|
154
|
+
*このアクション自体は成功します。
|
|
153
155
|
|
|
154
|
-
|
|
155
156
|
##問題点
|
|
156
|
-
1. UTF-8にするコードを書いていますが文字化けしてい
|
|
157
|
+
1. UTF-8にするコードを書いていますが文字化けしている
|
|
157
158
|
2. 呼び出される順番がimages/1のファイル → images/1 → images/4のファイル → images/4 といったように、意図した順番にならない
|
|
158
159
|
3. images/5もimages/5内にあるファイルも呼ばれていない(実際には格納されている)
|
|
159
160
|
|