我正在尝试使用eajaxupload扩展来处理我网站上的文件上传。我完全按照here指令遇到了一个问题:每次上传一个有效文件时都会失败(对无效文件的验证效果很好)。我用Google搜索并发现了一个可能的解决方案here,但我没有成功。 这是在我的控制器中:
public function actionUpload() {
Yii::import("ext.EAjaxUpload.qqFileUploader");
$folder='upload/';// folder for uploaded files
$allowedExtensions = array("zip","rar","7z");//array("jpg","jpeg","gif","exe","mov" and etc...
$sizeLimit = 5 * 1024 * 1024;// maximum file size in bytes
$uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
$result = $uploader->handleUpload($folder);
$return = htmlspecialchars(json_encode($result), ENT_NOQUOTES);
$fileSize=filesize($folder.$result['filename']);//GETTING FILE SIZE
$fileName=$result['filename'];//GETTING FILE NAME
echo $return;// it's array
}
这在我看来:
$this->widget('ext.EAjaxUpload.EAjaxUpload',
array(
'id'=>'uploadFile',
'config'=>array(
'action'=>$this->createUrl('ProjectController/upload'),
'allowedExtensions'=>array("zip","rar","7z"),//array("jpg","jpeg","gif","exe","mov" and etc...
'sizeLimit'=>5*1024*1024,// maximum file size in bytes
//'minSizeLimit'=>10*1024*1024,// minimum file size in bytes
//'onComplete'=>"js:function(id, fileName, responseJSON){ alert(fileName); }",
//'messages'=>array(
// 'typeError'=>"{file} has invalid extension. Only {extensions} are allowed.",
// 'sizeError'=>"{file} is too large, maximum file size is {sizeLimit}.",
// 'minSizeError'=>"{file} is too small, minimum file size is {minSizeLimit}.",
// 'emptyError'=>"{file} is empty, please select files again without it.",
// 'onLeave'=>"The files are being uploaded, if you leave now the upload will be cancelled."
// ),
//'showMessage'=>"js:function(message){ alert(message); }"
)
));
如果我在某个地方出错,请告诉我。
答案 0 :(得分:2)
对我有用:
$folder=Yii::app() -> getBasePath() . "/../images/uploads/"
我的目录是:
“MYSITE /图像/上传”
答案 1 :(得分:0)
我的$ folder变量:
$folder = Yii::getPathOfAlias('webroot').'/upload/';
答案 2 :(得分:0)
对我有用:
$folder = Yii::app()->basePath . '/uploads/documents/';
我的根文件夹是:
c:\wamp\www\protected\uploads\documents\
查看文件:
<?php $this->widget('ext.EAjaxUpload.EAjaxUpload',
array(
'id'=>'uploadFile',
'config'=>array(
'action'=>Yii::app()->createUrl('documents/addDocumentActivitatByAjax').'/'.$modelActivitat->id,
'allowedExtensions'=>array('jpeg','jpg','gif','png','txt','doc','docx','xls','xlsx','xml','ppt','pptx','pdf', 'vsd'),
'sizeLimit'=>10*1024*1024,// Tamaño máximo del fichero en bytes (10M)
'minSizeLimit'=>1024,// Tamaño minimo del fichero en bytes
'onComplete'=>"js:function(id, fileName, responseJSON){
if(responseJSON.success){
var msg = JSON.stringify(responseJSON);
addFlashMessage(msg);
$('#documents-grid').yiiGridView.update('documents-grid');
}
}",
),
)); ?>
控制器:
/**
* Recibe por ajax un campo tipo 'file' y lo guarda como 'documents'
* @param id Recibido por GET como parametro es el valor asignado al campo 'id_relacio' del Document a crear
*/
public function actionAddDocumentActivitatByAjax(){
$id_relacio = isset($_GET['id'])? $_GET['id'] : null;
if(!empty($id_relacio)){
$this->addDocument(LEME_DOCUMENTS_TIPUS_RELACIO_ACTIVITAT, $id_relacio);
}else{
echo htmlspecialchars(json_encode(array('success'=>'false', 'error'=>'No s\'ha rebut el id de l\'activitat associada')), ENT_NOQUOTES);
}
}
/**
* Recibe por ajax un campo tipo 'file' y lo guarda como 'documents'
* @param tipus_relacio Id del tipo de relación que guardará el Document
* @param id Recibido como parametro es el valor asignado al campo 'id_relacio' del Document a crear
*/
public function addDocument($tipus_relacio, $id_relacio){
Yii::import("ext.EAjaxUpload.qqFileUploader");
$folder = Yii::app()->basePath.$this->carpetaContingut;
// $allowedExtensions = array('jpeg','jpg','gif','png','txt','doc','docx','xls','xlsx','xml','ppt','pptx','pdf', 'vsd');
// $sizeLimit = 25 * 1024 * 1024;// 25M
$uploader = new qqFileUploader();
$originalName = $uploader->file->getName();
$originalName = SettingHelper::eliminaAcentos($originalName);
// Guardamos el archivo con nombre 'MD5()'
$result = $uploader->handleUpload($folder);
if(!isset($result['error'])){
// Si se sube bien generamos el registro en documents y renombramos el archivo recien subido a 'idDocument-NombreArchivoSubido.ext'
// $result['fileSize'] = filesize($folder.$result['filename']);//GETTING FILE SIZE
$fileNameMD5=$result['filename']; // Nombre del fichero guardado en encriptado en MD5
$document = new Documents();
$document->tipus_relacio = $tipus_relacio; // ID referent al tipus de relacio segons la taula vinculada
$document->id_relacio = $id_relacio; // ID del registre al que pertany
$document->path = $this->carpetaContingut;
if($document->save()){
// Renombramos el archivo recien subido con el nuevo nombre : 'idDocument-NombreArchivoSubido.ext'
$newName = $document->id.'-'.$originalName;
if(rename($folder.$fileNameMD5, $folder.$newName)){
// Si se renombra, hacemos update del 'document' con el nombre del archivo final
$document->url = $newName;
$document->save();
$return = array('success'=>'true', 'estat'=>'success', 'text'=> 'El fitxer "'.$newName.'" s\'ha guardat correctament.');
}
}else{ // si da error al generar el document eliminamos el fichero recién subido.
unlink($folder.$fileNameMD5);
$return = array('success'=>'false', 'error'=> 'Error al generar el registre "document" associat.');
}
}else{ //Si da error al subir el fichero
$return = $result;
}
echo CJSON::encode($return);
}
答案 3 :(得分:0)
您需要打开php.ini文件并进行以下更改:
upload_max_filesize = 10M //Change to upload_max_filesize = 20M
和
post_max_size = 2M // Change to 50M
重启Apache Sever,你就去了!