for use this plugin, install jquery-file-upload in web
install punk_ave bundle
and this is my example:
install punk_ave bundle
and this is my example:
/**
* @Route("/import",name="prospection_admin_import")
* @Template()
*/
public function importAction(){
$fileUploader = $this->get('punk_ave.file_uploader');
$request = $this->getRequest();
$existingFiles=null;
$editId = $request->query->get('editId');
if (!$editId){
$editId=$request->getSession()->get('editId');
}
if ($editId){
$existingFiles = $fileUploader->getFiles(array('folder' => '/tmp/attachments/'. $editId));
if ($request->getMethod() == 'POST') {
$type=$request->request->get("importType");
$importHandler=$this->get('addepi.prospection.import.handler');
$path=$this->get('kernel')->getRootDir()."/../web/uploads/tmp/attachments/".$editId."/originals/";
foreach($existingFiles as $file){
if (!$importHandler->importFile($path.$file,$type)){
$this->get('session')->getFlashBag()->add('notice', 'Treat file error:'.$file);
break;
}else
$this->get('session')->getFlashBag()->add('notice', 'File treated :'.$file);
}
}
}else{
$editId = sprintf('%09d', mt_rand(0, 1999999999));
$request->getSession()->set('editId',$editId);
}
return array("editId"=>$editId);
}
/**
* @Route("/upload",name="prospection_admin_upload" ,options={"expose"=true})
* @Template()
*/
public function uploadAction(){
$editId = $this->getRequest()->get('editId');
if (!preg_match('/^\d+$/', $editId) && $editId!='test')
{
throw new \Exception("Bad edit id");
}
$this->get('punk_ave.file_uploader')->handleFileUpload(array('folder' => '/tmp/attachments/' . $editId));
}
javascript is like this:
$(document).ready(function(){
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: uploadUrl,
maxChunkSize: 5000000,
});
// Load existing files:
$('#fileupload').addClass('fileupload-processing');
$.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: uploadUrl,
dataType: 'json',
context: $('#fileupload')[0]
}).always(function (result) {
$(this).removeClass('fileupload-processing');
}).done(function (result) {
$(this).fileupload('option', 'done')
.call(this, null, {result: result});
});
the string uploadurl is point to the upload action. And each time we just save the editId in the session and so we can have a list for session. or other wise, we can use it to individual upload process, such like for a announcement, profil etc.
评论
发表评论