добавить файлы в webroot / files

0

У меня проблема, у меня есть файл просмотра, но как сохранить эти загрузки в webroot/files. Im использует CakePHP:

Это мой файл uploadfile.ctp

echo $this->Form->create('YourModel', array('type' => 'file','enctype'=>'multipart/form-data'));

echo $this->Form->input('files.', array('type' => 'file', 'multiple'));

echo $this->Form->end('Submit');

Я не знаю, с чего начать в контроллере, мне действительно нужны эти файлы в webroot/files, thankyou!

На данный момент у меня в контроллере:

public function uploadFile() {

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

           $tmp_name=$this->request->data['UploadFile']['image'];
           $filename = time().$this->request->data['UploadFile']['image']['name'];
           if (move_uploaded_file($tmp_name['tmp_name'],WWW_ROOT."/files".$filename)) {

          } else {
            $this->Session->setFlash('There was a problem uploading file. Please try again.','default',array('class'=>'alert alert-danger'));

        }
       }

        }

ОБНОВИТЬ

Теперь у меня есть обновленный файл просмотра и обновленный контроллер, где я хочу загрузить несколько файлов, но только один файл входит в папку с файлами.

Посмотреть файл:

<?php
    echo $this->Form->create('uploadFile', array( 'type' => 'file'));
?>

    <div class="input_fields_wrap">

        <label for="uploadFilefiles"></label>
        <input type="file" name="data[files]" id="uploadFilefiles">

    </div>

<button type="button" class="add_field_button">+</button> <br><br>

    <form name="frm1" method="post" onsubmit="return greeting()">
        <input type="submit" value="Submit">
    </form>

<?php
echo $this->Html->script('addFile');

Файл контроллера:

public function uploadFile() {
        $filename = '';
            if ($this->request->is('post')) { // checks for the post values
                $uploadData = $this->data['files'];
                print_r($this->data['files']); die;
                if ( $uploadData['size'] == 0 || $uploadData['error'] !== 0) { // checks for the errors and size of the uploaded file
                    echo "Failide maht kokku ei tohi olla üle 5MB";
                    return false;
                }
                $filename = basename($uploadData['name']); // gets the base name of the uploaded file
                $uploadFolder = WWW_ROOT. 'files';  // path where the uploaded file has to be saved
                $filename = $filename; // adding time stamp for the uploaded image for uniqueness
                $uploadPath =  $uploadFolder . DS . $filename;
                if( !file_exists($uploadFolder) ){
                    mkdir($uploadFolder); // creates folder if  not found
                }
                if (!move_uploaded_file($uploadData['tmp_name'], $uploadPath)) {
                    return false;
                } 
                echo "Sa sisestasid faili(d): $filename";

            }

    }

и этот Javascript:

$(document).ready(function() {
    var max_fields      = 3;
    var wrapper         = $(".input_fields_wrap");
    var add_button      = $(".add_field_button");

    var x = 1;
    $(add_button).click(function(e){
        e.preventDefault();
        if(x < max_fields){
            x++;
            $(wrapper).append("<div><input type='file' name='data[files]' id='uploadFilefiles'/><a href='#' class='remove_field'>Kustuta</a></div>");
        }
     });

      $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
            e.preventDefault(); $(this).parent('div').remove(); x--;
        })
});

Как я могу загрузить все 3 файла в папку webroot/files?

  • 0
    Что я точно хочу сделать: если я нажму Sumbit, то сохраню эти файлы в Webroot / Files.
  • 0
    переместить несколько файлов
Теги:
cakephp

3 ответа

1
try this code , this is a demo code and its is work on my server

  <div class="col-sm-12">
              <?php echo $this->Form->file('Feature.image.',array('class'=>'form-control','label'=>false,'div'=>false,'required','multiple'));?>
              </div>

Изображение 174551

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

        $data=$this->request->data['Feature']['image'];
        foreach ($data as $key => $value) {
         $this->request->data['Feature']['image'][$key]['name'];

       $tmp_name=$this->request->data['Feature']['image'][$key];

      $filename = time().$this->request->data['Feature']['image'][$key]['name'];

       if (move_uploaded_file($tmp_name['tmp_name'],WWW_ROOT."/img/feature/".$filename)) {

        $updatefile= $this->Feature->updateAll(
                array('Feature.image' => "'$filename'"),
                array('Feature.id' => $id,'Feature.userid'=>$this->Session->read('Auth.User.id'))
            );
       if($updatefile==1){
        $file = new File(WWW_ROOT . 'img/feature/'.$featuredata['Feature']['image'], false, 0777);
        if($file->delete()) {
          $this->Session->setFlash('File uploaded successfuly uploaded.','default',array('class'=>'alert alert-success'),'success'); 
          return $this->redirect(array('controller'=>'Users','action'=>'featureshow')) ;

         }

       }

      } else {
        $this->Session->setFlash('There was a problem uploading file. Please try again.','default',array('class'=>'alert alert-danger'));
      }
   }
 }
  • 0
    пожалуйста, не могли бы вы уточнить, если я прав, вы можете загрузить через JavaScript
  • 0
    Мой файл просмотра сильно отличается от вашего, этот контроллер не работает для меня
Показать ещё 2 комментария
0

Использовать это:-

$uploadedFile = $this->request->params['form']['uploadCsv']['tmp_name'];
$dir = WWW_ROOT . 'files/';
if ( !is_dir( $dir ) ) {
    mkdir($dir);
    chmod( $dir , 777);
}
$fileName = 'file_' . date( 'Y_m_d_h_i_s', time() );
move_uploaded_file( $uploadedFile, $dir. $fileName . '.csv' );

Это пример кода, который работает на моем сервере и должен работать и на вас

  • 0
    Это не работает для меня
  • 0
    Какую ошибку вы получаете
0

Нет, конечно, вам не нужен стол. Я думаю, вы ищете что-то подобное в своем контроллере:

                foreach($this->request->data['files'] as $file){
                            move_uploaded_file($file['tmp_name'], WWW_ROOT . 'uploads/' . $uuid . '.jpg');
                }
  • 0
    мм, это только для изображений?
  • 0
    Мне нужно загрузить все файлы, PDF, JPG, PHP, CSV, ......
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню