質問編集履歴

4

頂いたアドバイスを元に修正・試験をおこなったが、同じエラーが発生。

2020/12/30 14:25

投稿

EzrealTrueshot
EzrealTrueshot

スコア389

test CHANGED
File without changes
test CHANGED
@@ -241,3 +241,185 @@
241
241
  Ubuntu18.04
242
242
 
243
243
  go version go1.15.6 linux/amd64
244
+
245
+
246
+
247
+ #追記
248
+
249
+ ### 頂いたアドバイスを元に修正したバージョン1(func(){}()を追記)
250
+
251
+ ```go
252
+
253
+ func main (){
254
+
255
+ ary := ["/root/a/a.txt","/root/b/b.txt","/root/c/c.txt",...] // アップロード対象のファイルパスが大量に入っている配列
256
+
257
+ file_upload(ary)
258
+
259
+ }
260
+
261
+ func file_upload(file_paths []string) {
262
+
263
+ for _, file_path := range file_paths {
264
+
265
+ func () {
266
+
267
+ var buf bytes.Buffer
268
+
269
+ w := multipart.NewWriter(&buf)
270
+
271
+
272
+
273
+ f, err := os.Open(file_path)
274
+
275
+ if err != nil {
276
+
277
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
278
+
279
+ }
280
+
281
+ defer f.Close()
282
+
283
+ fw, err := w.CreateFormFile("file-text", file_path)
284
+
285
+ if err != nil {
286
+
287
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
288
+
289
+ }
290
+
291
+ _, err = io.Copy(fw, f)
292
+
293
+ if err != nil {
294
+
295
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
296
+
297
+ }
298
+
299
+ w.Close()
300
+
301
+ req, err := http.NewRequest("POST", "http://xxx.xxx.xxx.xxx:xxxx/upload", &buf)
302
+
303
+ if err != nil {
304
+
305
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
306
+
307
+ }
308
+
309
+ req.Header.Set("Authorization", "Bearer YYYY")
310
+
311
+ req.Header.Set("Content-Type", w.FormDataContentType())
312
+
313
+
314
+
315
+ resp, err := http.DefaultClient.Do(req)
316
+
317
+ defer resp.Body.Close()
318
+
319
+ time.Sleep(time.Second * 1)
320
+
321
+ if err != nil {
322
+
323
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
324
+
325
+ }
326
+
327
+ fmt.Println(resp)
328
+
329
+ }()
330
+
331
+ }
332
+
333
+ }
334
+
335
+ ```
336
+
337
+ ### 頂いたアドバイスを元に修正したバージョン(for文の中で関数を回す)
338
+
339
+ ```go
340
+
341
+ func main (){
342
+
343
+ ary := ["/root/a/a.txt","/root/b/b.txt","/root/c/c.txt",...] // アップロード対象のファイルパスが大量に入っている配列
344
+
345
+ for _,file_path := range file_paths{
346
+
347
+ file_upload(file_path)
348
+
349
+ }
350
+
351
+ }
352
+
353
+ func file_upload(file_path string) {
354
+
355
+
356
+
357
+ var buf bytes.Buffer
358
+
359
+ w := multipart.NewWriter(&buf)
360
+
361
+
362
+
363
+ f, err := os.Open(file_path)
364
+
365
+ if err != nil {
366
+
367
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
368
+
369
+ }
370
+
371
+ defer f.Close()
372
+
373
+ fw, err := w.CreateFormFile("file-text", file_path)
374
+
375
+ if err != nil {
376
+
377
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
378
+
379
+ }
380
+
381
+ _, err = io.Copy(fw, f)
382
+
383
+ if err != nil {
384
+
385
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
386
+
387
+ }
388
+
389
+ w.Close()
390
+
391
+ req, err := http.NewRequest("POST", "http://xxx.xxx.xxx.xxx:xxxx/upload", &buf)
392
+
393
+ if err != nil {
394
+
395
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
396
+
397
+ }
398
+
399
+ req.Header.Set("Authorization", "Bearer YYYY")
400
+
401
+ req.Header.Set("Content-Type", w.FormDataContentType())
402
+
403
+
404
+
405
+ resp, err := http.DefaultClient.Do(req)
406
+
407
+ defer resp.Body.Close()
408
+
409
+ time.Sleep(time.Second * 1)
410
+
411
+ if err != nil {
412
+
413
+ fmt.Fprintf(os.Stderr, "fatal: error: %s", err.Error())
414
+
415
+ }
416
+
417
+ fmt.Println(resp)
418
+
419
+ }
420
+
421
+ ```
422
+
423
+
424
+
425
+ ともに詰まってしまい、同じエラーメッセージがクライアント側で表示されます。

3

エラー時の詳細について詳しく追記

2020/12/30 14:25

投稿

EzrealTrueshot
EzrealTrueshot

スコア389

test CHANGED
File without changes
test CHANGED
@@ -222,7 +222,7 @@
222
222
 
223
223
 
224
224
 
225
- `file_upload`関数の書き方でPOSTしたい(AuthorizationのBearerを使いたいたいめ)のですが、上記の io エラーが出てしまっています。
225
+ `file_upload`関数の書き方でPOSTしたい(AuthorizationのBearerを使いたいたいめ)のですが、上記の io エラーが出てしまっています。(5ファイル~20ファイル程はきちんとアップロードされ、そのあと詰まった感じになり上記エラーが発生。早すぎるから問題なのかな?思い、送信処理時にsleepを毎回1秒ほどいれてみたが結果は変わらず。)
226
226
 
227
227
 
228
228
 

2

postFile関数の引数が間違っていた。

2020/12/30 10:41

投稿

EzrealTrueshot
EzrealTrueshot

スコア389

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  for _,v := range ary {
34
34
 
35
- postFile(ary, "http://xxx.xxx.xxx.xxx:xxxx/upload")
35
+ postFile(v, "http://xxx.xxx.xxx.xxx:xxxx/upload")
36
36
 
37
37
  }
38
38
 

1

CreateFormfileの引数を fileから file-text へ変更。

2020/12/30 10:38

投稿

EzrealTrueshot
EzrealTrueshot

スコア389

test CHANGED
File without changes
test CHANGED
@@ -162,7 +162,7 @@
162
162
 
163
163
  defer f.Close()
164
164
 
165
- fw, err := w.CreateFormFile("file", file_path)
165
+ fw, err := w.CreateFormFile("file-text", file_path)
166
166
 
167
167
  if err != nil {
168
168