Nota: Presumo que você tenha o laravel instalado e pronto .. se não estiver, verifique esta http://laravel.com/docs/quick#installation
Passo 1 :
pegue recursos do uploader Jquery aqui: https://github.com/blueimp/jQuery-File-Upload
Passo 2 :
em seu routes.php, adicione a seguinte rota para lidar com a solicitação de postagem:
Route::post('upload',array('as'=>'upload', 'before'=>'auth','uses'=>'UploadController@index'));
Passo 3:
na pasta de controladores, crie um novo controlador chamado UploadController.php, este irá conter a ação de postagem que fará o upload da imagem, será o seguinte:
<?php class UploadController extends BaseController
{
public $restful=true;public function index(){
$valid_exts = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
$max_size = 2000 * 1024; // max file size (200kb)
$path = public_path() . '/img/'; // upload directory
$fileName = NULL;
if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
{
$file = Input::file('uploaded_img');
// get uploaded file extension
//$ext = $file['extension'];
$ext = $file->guessClientExtension();
// get size
$size = $file->getClientSize();
// looking for format and size validity
$name = $file->getClientOriginalName();
if (in_array($ext, $valid_exts) AND $size < $max_size)
{
// move uploaded file from temp to uploads directory
if ($file->move($path,$name))
{
$status = 'Image successfully uploaded!';
$fileName = $name;
}
else {
$status = 'Upload Fail: Unknown error occurred!';
}
}
else {
$status = 'Upload Fail: Unsupported file format or It is too large to upload!';
}
}
else {
$status = 'Bad request!';
}
// echo out json encoded status
return header('Content-type: application/json') . json_encode(array('status' => $status,
'fileName' => $fileName));
}
}
?>
Etapa 4:
e sua visualização será assim:
<link href="{{asset('css/uploadfile.css')}}" rel="stylesheet">
<script src="{{asset('js/jquery.uploadfile.min.js')}}"></script><script type="text/javascript">
$().ready(function()
{
$("#avatarUploader").uploadFile({
url:"{{route('upload')}}",
allowedTypes:"png,gif,jpg,jpeg",
fileName:"uploaded_img",
onSuccess:function(files,data,xhr)
{
data= $.parseJSON(data); // yse parseJSON here
if(data.error){
//there is an error
} else {
//there is no error
fileName = data['fileName'];
$('#avatar').val(fileName);
}
}
});
});
<div id="avatarUploader">Upload</div>
<input type="hidden" name="avatar" id="avatar"/>
Finalmente:
Você encontrará sua imagem carregada em: public / img /
E é assim que você implementa o upload de imagens em laravel4 usando jquery uploader. Seus comentários são mais que bem-vindos.