質問するログイン新規登録

質問編集履歴

8

情報の修正

2019/01/19 06:02

投稿

s_diff
s_diff

スコア109

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

情報の追加

2019/01/19 06:02

投稿

s_diff
s_diff

スコア109

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

不足があったため

2019/01/19 06:01

投稿

s_diff
s_diff

スコア109

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

情報に不足があったため

2018/12/21 10:26

投稿

s_diff
s_diff

スコア109

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

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

2018/12/21 10:25

投稿

s_diff
s_diff

スコア109

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

不足を補うため

2018/12/21 09:54

投稿

s_diff
s_diff

スコア109

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

誤りの修正のため

2018/12/21 09:48

投稿

s_diff
s_diff

スコア109

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[fake_zip]\"; filename=\"images.zip\"\r\nContent-Type: application/zip\r\n">
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

不足があったため

2018/12/21 09:47

投稿

s_diff
s_diff

スコア109

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