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
}
]
4 odpowiedzi
Sprawdź plik ostrza, dodając to:
<input type="file" accept="image/*" /> <!-- all image types -->
Powinieneś dodać
$this->validate($request, [
'images' => 'required|image|mimes:jpeg,png,jpg,gif'
])
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.
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!
Podobne pytania
Powiązane pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.
max_upload_size
wphp.ini
nie wystarczyła dla przesyłanych obrazów. Domyślnie jest to2MB
, więc to może być twój problem. Powiększ i spróbuj ponownie.jpg
, aby potwierdzić, że jest to problem z rozmiarem pliku