[英]File upload ZF2
是否存在明顯的原因,為什么./data/stockhelper
沒有文件。 權限正確。
public function uploadAction()
{
$request = $this->getRequest();
if($request->isPost()) {
$files = $request->getFiles()->toArray();
$httpadapter = new \Zend\File\Transfer\Adapter\Http();
$filesize = new \Zend\Validator\File\Size(array('max' => 100000 )); //1KB
$extension = new \Zend\Validator\File\Extension(array('extension' => array('xlsx')));
$httpadapter->setValidators(array($filesize, $extension), $files['file']['name']);
if($httpadapter->isValid()) {
// We get here.
// move_uploaded_file($_FILES['file']['tmp_name'], sprintf('./data/stockhelper/%s.%s', sha1_file($_FILES['file']['tmp_name']), 'xlsx')); // <--- this works
$httpadapter->setDestination('./data/stockhelper');
if($httpadapter->receive($files['file']['name'])) {
// We don't get here;
$newfile = $httpadapter->getFileName();
var_dump($newfile);
}
}
}
die();
}
我看到這只是將上傳的文件移動到目的地。 $httpadapter->receive()
僅用於檢查是否上傳了文件。 它並非旨在移動上載的文件。 您應該為此使用Filter
,然后調用File\\Rename
過濾器。
$httpadapter->setDestination('./data/stockhelper');
$httpadapter->setValidators(array($filesize, $extension), $files['file']['name']);
$httpadapter->addFilter('File\Rename', array('target' => $httpadapter->getDestination() . DIRECTORY_SEPARATOR . sha1_file($files['file']['name']) . '.xls', 'overwrite' => true));
if (!$adapter->receive()) {
// uploading error
$messages = $httpadapter->getMessages();
} else {
$newfile = $httpadapter->getFileName();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.