CAKEPHP 4: Я не могу загрузить много файлов одновременноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 CAKEPHP 4: Я не могу загрузить много файлов одновременно

Сообщение Anonymous »

Спокойной ночи (или доброго утра),
Я пытаюсь загрузить несколько файлов одновременно. Я следую инструкциям кулинарной книги, чтобы создать решение. Я всегда получаю первый файл (а не массив файлов).
Вот мой код представления...

Код: Выделить всё




[h4][/h4]















А вот мой код контроллера...

Код: Выделить всё

public function add()
{
$upload = $this->Uploads->newEmptyEntity();

if ($this->request->is('post')) {

$upload = $this->Uploads->patchEntity($upload, $this->request->getData());

if ($this->Uploads->save($upload)) {

if (!is_dir($this->Parameters->findByName('document_directory')->first()->toArray()['value'] )) {
mkdir($this->Parameters->findByName('document_directory')->first()->toArray()['value'], 0776, true);
}

$documents = $this->request->getData('documents');

$this->loadModel('Dockets');
$dockets = $this->Dockets->findByDocketStateId(1);

$documents_ok = 0;
$documents_nok = 0;
$dockets_without_document = 0;

foreach($documents as $documents_key => $document_to_save)
{
foreach($dockets as $dockets_key => $docket)
{
$contents = file_get_contents($document_to_save);

$pattern = str_replace('-', '', $pattern);

$pattern = str_replace('', '', $pattern);

$pattern = preg_quote($docket->cuit, '/');

$pattern = "/^.*$pattern.*\$/m";
// search, and store all matching occurences in $matches
if(preg_match_all($pattern, $contents, $matches)){

$documentsTable = $this->getTableLocator()->get('Documents');
$document = $documentsTable->newEmptyEntity();

$document->upload_id = $upload->id;

$document->document_type_id = $upload->document_type_id;

$document->period_id = $upload->period_id;

$document->docket_id = $docket->id;

$document->user_id = $this->getRequest()->getAttribute('identity')['id'];

if ($documentsTable->save($document)) {

if (!is_dir($this->Parameters->findByName('document_directory')->first()->toArray()['value'] )) {
mkdir($this->Parameters->findByName('document_directory')->first()->toArray()['value'], 0776, true);
}

$fileobject = $this->request->getData('document');

$destination = $this->Parameters->findByName('document_directory')->first()->toArray()['value']  . 'document_' . $document->id .  '.pdf';

// Existing files with the same name will be replaced.
$fileobject->moveTo($destination);
}
$this->Flash->error(__('The document could not be saved. Please, try again.'));

$documents_ok = $documents_ok + 1;

unset($dockets[$dockets_key]);

unset($documents[$documents_key]);

break;
}
}
}

if(!empty($documents)){

//print_r($documents);

$documents_nok = count($documents);

unset($documents);
}

if(!empty($dockets)){

$dockets_without_document = count($dockets);

unset($dockets);

}

$message = __('There were processed ') . $documents_ok . __(' documents succesfully. ') . $documents_nok . __(' documents did not math with a docket. And ') . $dockets_without_document . __(' active dockets ddid not not have a document.');

$this->Flash->success(__('The upload has been saved. ') . $message);

return $this->redirect(['action' => 'view', $upload->id]);
}
$this->Flash->error(__('The upload could not be saved. Please, try again.'));
}
$documentTypes = $this->Uploads->DocumentTypes->find('list', ['keyField' => 'id',
'valueField' => 'document_type',
'limit' => 200]);
$periods = $this->Uploads->Periods->find('list', ['keyField' => 'id',
'valueField' => 'period',
'limit' => 200]);
$users = $this->Uploads->Users->find('list', ['keyField' => 'id',
'valueField' => 'full_name',
'conditions' => ['id' => $this->getRequest()->getAttribute('identity')['id']],
'limit' => 200]);
$this->set(compact('upload', 'documentTypes', 'periods', 'users'));
}
Можете ли вы помочь мне понять, что я делаю неправильно?
Спасибо,
Гонсало

Подробнее здесь: https://stackoverflow.com/questions/650 ... -same-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»