質問編集履歴

8

情報の修正

2019/01/19 06:02

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -410,12 +410,6 @@
410
410
 
411
411
  entry.extract(t.path) { true }
412
412
 
413
- p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
414
-
415
- p xxxxx
416
-
417
- p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
418
-
419
413
  @product.send("products_image#{num}=", t)
420
414
 
421
415
  end

7

情報の追加

2019/01/19 06:02

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -339,3 +339,89 @@
339
339
  何が原因なのかわかりません。そもそもzipファイル内のファイルを意図した順番で並べることが不可能なのでしょうか?
340
340
 
341
341
  なにかご教示いただけることがあれば、何卒よろしくお願いいたします。
342
+
343
+
344
+
345
+ ##追記
346
+
347
+ zip.each do |entry|の中でencodingのコードを追加しましたが、問題点に変化がありません。
348
+
349
+
350
+
351
+ ```ruby
352
+
353
+ Zip::File.open(zipfile.path) do |zip|
354
+
355
+ num = 0
356
+
357
+ zip.each do |entry|
358
+
359
+ unless entry.name.valid_encoding?
360
+
361
+ entry.name.force_encoding case NKF.guess(entry.name)
362
+
363
+ when NKF::EUC then 'euc-jp'
364
+
365
+ when NKF::SJIS then 'cp932'
366
+
367
+ when NKF::UTF8 then 'utf-8'
368
+
369
+ when NKF::UTF16 then 'utf-16'
370
+
371
+ when Encoding::EUCJP_MS then Encoding::EUCJP_MS
372
+
373
+ when Encoding::CP51932 then Encoding::CP51932
374
+
375
+ when Encoding::WINDOWS_31J then Encoding::WINDOWS_31J
376
+
377
+ else
378
+
379
+ # JISコードもしくは不明
380
+
381
+ raise "文字コードが想定外です"
382
+
383
+ end
384
+
385
+ entry.name.encode! 'utf-8'
386
+
387
+ end
388
+
389
+ ext = File.extname(entry.name) #拡張子を取得
390
+
391
+ # 隠しファイルやゴミファイルは飛ばす
392
+
393
+ next if ext.blank? || File.basename(entry.name).count(".") > 1
394
+
395
+
396
+
397
+ num += 1
398
+
399
+ if num > 30 then
400
+
401
+ break
402
+
403
+ end
404
+
405
+
406
+
407
+ # 一時ファイルを作る
408
+
409
+ Tempfile.open(["tempProductImageFile", ext]) do |t|
410
+
411
+ entry.extract(t.path) { true }
412
+
413
+ p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
414
+
415
+ p xxxxx
416
+
417
+ p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
418
+
419
+ @product.send("products_image#{num}=", t)
420
+
421
+ end
422
+
423
+ end
424
+
425
+ end
426
+
427
+ ```

6

不足があったため

2019/01/19 06:01

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,10 @@
14
14
 
15
15
 
16
16
 
17
+ ##試したこと
18
+
19
+
20
+
17
21
  zipファイル内にはフォルダが5つあり、それぞれフォルダ名を「1」「2」「3」「4」「5」にしています。理由は、このフォルダの番号順にレコードを作成したいからです。
18
22
 
19
23
  ちなみにフォルダ1に入っているファイルは1つ、フォルダ2に入っているファイルも1つ、フォルダ3からフォルダ5までに入っているファイルは複数あります。

5

情報に不足があったため

2018/12/21 10:26

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
 
4
4
 
5
+ ##環境
6
+
7
+ macOS High Sierra(バージョン10.13.6)
8
+
9
+ ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin17]
10
+
11
+ Rails 4.2.6
12
+
13
+ rubyzip (1.2.2)
14
+
15
+
16
+
5
17
  zipファイル内にはフォルダが5つあり、それぞれフォルダ名を「1」「2」「3」「4」「5」にしています。理由は、このフォルダの番号順にレコードを作成したいからです。
6
18
 
7
19
  ちなみにフォルダ1に入っているファイルは1つ、フォルダ2に入っているファイルも1つ、フォルダ3からフォルダ5までに入っているファイルは複数あります。

4

誤まった文法を修正するため

2018/12/21 10:25

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -310,7 +310,7 @@
310
310
 
311
311
  ##問題点
312
312
 
313
- 1. UTF-8にするコードを書いていますが文字化けしている
313
+ 1. UTF-8にするコードを書いていが文字化けしている
314
314
 
315
315
  2. 呼び出される順番がimages/1のファイル → images/1 → images/4のファイル → images/4 といったように、意図した順番にならない
316
316
 

3

不足を補うため

2018/12/21 09:54

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -304,7 +304,7 @@
304
304
 
305
305
  ```
306
306
 
307
- *このアクション自体は成功します。
307
+ *このアクション自体は成功しますが、意図した順番とはちがいます
308
308
 
309
309
 
310
310
 

2

誤りの修正のため

2018/12/21 09:48

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -92,7 +92,7 @@
92
92
 
93
93
  "1111111111111111111111111111111"
94
94
 
95
- #<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[fake_zip]\"; filename=\"images.zip\"\r\nContent-Type: application/zip\r\n">
95
+ #<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">
96
96
 
97
97
  "1111111111111111111111111111111"
98
98
 

1

不足があったため

2018/12/21 09:47

投稿

s_diff
s_diff

スコア107

test CHANGED
File without changes
test CHANGED
@@ -78,6 +78,8 @@
78
78
 
79
79
  end
80
80
 
81
+  end
82
+
81
83
  ```
82
84
 
83
85
 
@@ -302,13 +304,13 @@
302
304
 
303
305
  ```
304
306
 
305
-
307
+ *このアクション自体は成功します。
306
308
 
307
309
 
308
310
 
309
311
  ##問題点
310
312
 
311
- 1. UTF-8にするコードを書いていますが文字化けしてい
313
+ 1. UTF-8にするコードを書いていますが文字化けしてい
312
314
 
313
315
  2. 呼び出される順番がimages/1のファイル → images/1 → images/4のファイル → images/4 といったように、意図した順番にならない
314
316