Pomyślnie załadowałem ten format (jpeg, png, gif), ale nie format jpg nie jest przesyłany.

public function store(Request $request)
{
  $images = array();
  if($request->hasFile('images')){
    foreach ($request->file('images') as $image) {
        $path = $image->store('images');
        $images[] = $path;
    }
  }
  dd($request->file('images'));
}

Mój problem jest taki! dlaczego nie można przesłać formatu JPG.

Edytuj dd z następujących:

 array:1 [▼
    0 => UploadedFile {#264 ▼
    -test: false
    -originalName: "home.jpg"
    -mimeType: "application/octet-stream"
    -error: 1
    #hashName: null
    path: ""
    filename: ""
    basename: ""
    pathname: ""
    extension: ""
    realPath: "/home/vic/dev/project/client/ccity/public"
    aTime: 1970-01-01 00:00:00
    mTime: 1970-01-01 00:00:00
    cTime: 1970-01-01 00:00:00
    inode: false
    size: false
    perms: 00
    owner: false
    group: false
    type: false
    writable: false
    readable: false
    executable: false
    file: false
    dir: false
    link: false
  }
]
1
Akan Udosen 20 listopad 2019, 10:54
W tym kodzie nie ma nic, co wykluczałoby jakiekolwiek typy plików
 – 
lagbox
20 listopad 2019, 11:03
3
Miałem ten sam problem kilka dni temu. Po całym dniu debugowania zdałem sobie sprawę, że konfiguracja max_upload_size w php.ini nie wystarczyła dla przesyłanych obrazów. Domyślnie jest to 2MB, więc to może być twój problem. Powiększ i spróbuj ponownie.
 – 
zlatan
20 listopad 2019, 11:09
Przed sugestiami @zlatan spróbuj przesłać mały plik jpg, aby potwierdzić, że jest to problem z rozmiarem pliku
 – 
N69S
20 listopad 2019, 11:27
Czy to odpowiada na twoje pytanie? stackoverflow.com/questions/45775532/…
 – 
Oluwatobi Samuel Omisakin
20 listopad 2019, 11:35
To działa jak magia, ale jest to upload_max_filesize w php 7. Dzięki @zlatan
 – 
Akan Udosen
20 listopad 2019, 12:19

4 odpowiedzi

Sprawdź plik ostrza, dodając to:

<input type="file" accept="image/*" /> <!-- all image types --> 
0
Sok Chanty 20 listopad 2019, 11:01
Nie jest to dobre rozwiązanie, ponieważ DOM można łatwo modyfikować za pomocą narzędzi programistycznych przeglądarki. Strona serwera to prawdziwa okazja. Lepszym rozwiązaniem jest połączenie walidacji zarówno po stronie klienta, jak i po stronie serwera.
 – 
Assad Ullah Ch
20 listopad 2019, 13:29

Powinieneś dodać

$this->validate($request, [
    'images'             => 'required|image|mimes:jpeg,png,jpg,gif'
 ])
2
Hamza 20 listopad 2019, 11:07

Pozwól, że przeprowadzę Cię przez każdy krok, aby niczego nie przegapić.

Krok 1: utwórz kontroler do wyświetlania formularza i obsługi przesyłania plików

class FileUploadController extends Controller
{
    public function showUploadForm(){
        return view('form');
    }

    public function upload( Request $request ){

        $this->validate( $request, [
            'images' => 'required',
            'images.*' => 'image|mimes:jpeg,png,jpg,gif'
        ]);

        $images = [];

        foreach($request->file('images') as $image){
            $images[] = $image->store('image');
        }

    }
}

Krok 2: Zdefiniuj trasy w pliku web.php:

Route::get('/upload', 'FileUploadController@showUploadForm');
Route::post('/upload', 'FileUploadController@upload');

Krok 3: Formularz przesyłania pliku:

<form action="/upload" enctype="multipart/form-data"  method="post">
    @csrf
    <input type="file" name="images[]" multiple>
    <button>Upload</button>
</form>

Teraz, jeśli prześlesz jeden lub więcej plików, wszystkie powinny zostać przesłane do katalogu storage/app/images/.

Uwaga: Nie zapomnij upewnić się, że wartość upload_max_filesize w pliku php.ini. Możesz określić większą wartość, aby można było łatwo przesłać duże pliki.

Daj mi znać, jeśli nadal potrzebujesz pomocy.

0
Assad Ullah Ch 20 listopad 2019, 13:58

Jeśli sprawdzasz dane, upewnij się, że zastąpiłeś |image| |mimes:..|. Jak następuje

$this->validate($request, [
    'images'             => 'required|mimes:jpeg,png,jpg,gif'
 ])

Zauważ, że nie używam |image| w walidacji obrazu, zamiast tego użyłem mimes:jpeg,png,jpg,gif, ponieważ z jakiegoś powodu |Image| akceptuje wszystkie formaty obrazów oprócz jpg/jpeg. Udanego kodowania!

0
Jihad Noureddine 27 maj 2021, 11:21
To nie odpowiada na pytanie. Zamiast tego rozważ przekształcenie tego w komentarz.
 – 
Theraloss
26 maj 2021, 18:13