2016-07-23 3 views
0

내가 파일 배열을 저장할하지만 난 몇 가지 문제가있다, 이것은 내가, 내 HTML 코드laravel 파일 어레이 스토리지

<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 
<div> 
<input type="file" name tmp[]></input> 
<textarea name="text[]"></textarea> 
</div> 

내 컨트롤러

foreach ($request->input('text') as $key => $step){ 
$data = new Step; 
if($request->hasFile('tmp[$key]'){ 
$file = $request->tmp[$key]; 
    $extension = $file->getClientOriginalExtension(); 
    $file_name = strval(time()).str_random(5).'.'.$extension; 

    $destination_path = public_path().'/step-upload/'; 
    $data->img_url = $file_name; 
    $upload_success = $file->move($destination_path, $file_name); 

} 
$data->text=$step; 

하지만 그것은 작동하지 않았다이다 API가 hasFile (array)을 지원하지 않는다는 것을 알아 냈고, hasFile (string $ key)만을 지원합니다.

또한 if ($ request-> hasFile ('tmp [$ key]') {} 거기에 얼마나 많은 입력 파일이 있더라도 첫 번째 파일 만 잡아라.해결책이 있습니까?

답변

3

귀하의 HTML을 실제로 asuming 귀하의 form에 올바른 enctype을 사용하여 정확합니다.

Laravel은 hasFile 함수에서 점 주석 기능을 사용합니다. 따라서 'tmp[$key]' 대신 ('tmp.' . $key)을 사용하는 것입니다 (올바르지 않은 경우는 read up opon double vs single quotes).

그래서, 당신의 코드는 다음과 같아야합니다

foreach ($request->input('text') as $key => $step) { 
    if ($request->hasFile('tmp.' . $key)) { 
     $file = $request->file('tmp.' . $key); 
     // work with $file 
    } 
} 
+0

감사합니다! 그것의 작품! 고마워! –