Dropzone将上传文件的所有队列发送到控制器

时间:2017-12-10 10:56:06

标签: php codeigniter dropzone.js

我正在尝试使用DropZone js在一个请求中发送多个文件。

 <script type="text/javascript">
    Dropzone.autoDiscover = false;
    var file= new Dropzone(".dropzone",{
        url: any url,
        method:"post",
        paramName:"PhotoFiles",
        addRemoveLinks:true,
        autoProcessQueue: false
    });

    //Upload file onsubmit
    $('#UploadMultiFiles').submit(function(){
        file.processQueue();
    });

    file.on("sending",function(a,b,c){
        a.token=Math.random();
        c.append("token",a.token); 
    });

问题是我有相同形式的其他输入,这就是我使用onsubmit的原因,这些输入保存在表中,dropzone中的图像保存在另一个表中,两个表都有一个很多关系

控制器如:

  public function university_offers($id){

    $data['university_offer_name']=$this->input->post('university_offer_name');
    $data['university_id_fk']=$this->input->post('university_id_fk');
    $data['university_offer_details']=$this->input->post('university_offer_details');

    if ($this->input->post('save')){

        $data2['university_offer_id_fk'] = insertrecords('university_offers',$data);
        $data2['university_id_fk'] = $data['university_id_fk'];

  //when I put the next IF at the begining of the function it works but ofcourse without the other data fields that I need.
        if(isset($_FILES) && $_FILES != null){
             $data2['photo_name'] = upload_image('PhotoFiles');
             insertrecords('university_offer_photos',$data2);
    }

        if (insertrecords('university_offer_photos',$data2)==true)
            message('success','');
        redirect('Admin/university_offers/0','refresh');

    }

    $data['view']="admin/universities/university_offers";
    $this->load->view('index',$data);
}

我需要的是发送上传的文件并在controller中循环以将其保存在数据库中,而不是将每个文件发送到controller并保存。

修改

我的观点如下:

 <form action="university_offers/<?=$id?>" id="UploadMultiFiles" autocomplete="off" method="post" enctype="multipart/form-data" class="m-t-5"  novalidate>
                <div class="form-body">
                    <h3 class="card-title">بيانات العرض</h3>
                    <hr>
                    <div class="row p-t-20">
                        <div class="col-md-6">
                            <div class="form-group">
                                <label class="control-label">إسم العرض<span class="text-danger">*</span></label>
                                <div class="controls">
                                    <input type="text" autocomplete="off" name="university_offer_name" class="form-control" required value="<?php if(isset($result)) echo $result['university_offer_name']?>" data-validation-required-message="يجب إدخال إسم العرض" placeholder="إسم العرض">
                                </div>
                            </div>
                        </div>

                        <div class="col-md-6">
                            <div class="form-group">
                                <label class="control-label">إسم الجامعة<span class="text-danger">*</span></label>
                                <div class="controls">
                                    <select name="university_id_fk" id="select" class="form-control" required data-validation-required-message="يجب إختيار الجامعة" aria-invalid="false">
                                        <option value="">إختر الجامعة</option>
                                        <?php 
                                        foreach (selectrecords("*",'universities') as $university):
                                            $select = '';
                                            if(isset($result) && $result['university_id_fk'] == $university->university_id_pk)
                                                $select = 'selected';
                                        ?>
                                        <option <?=$select?> value="<?php echo $university->university_id_pk ?>"><?php echo $university->university_name ?></option>
                                        <?php endforeach;?>
                                    </select>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                                <label class="control-label">تفاصيل العرض<span class="text-danger">*</span></label>
                                <div class="controls">
                                    <textarea id="mymce" name="university_offer_details"><?php if(isset($result)) echo $result['university_offer_details'] ?></textarea>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                                <label class="control-label">صور العرض<span class="text-danger">*</span></label>
                                <div class="row">
                                <?php 
                                if(isset($result)) {
                                    foreach (selectrecords('*','university_offer_photos',array('university_offer_id_fk'=>$result['university_offer_id_pk'])) as $photo):
                                        echo'
                                            <div class="form-group text-center" id="'.$photo->photo_id_pk.'">
                                                <div class="col-md-12">
                                                    <img style="border: none; height: 150px; width: 150px; border-radius: 10px;" class="img-thumbnail" src="'.base_url().'public/uploads/images/'.$photo->photo_name.'">
                                                </div>
                                                <a href="#" onclick="return removePhoto('.$photo->photo_id_pk.')">حذف الملف</a>
                                            </div>
                                            ';
                                    endforeach;
                                }
                                ?>
                                </div>
                                <div class="dropzone">
                                    <div class="dz-message">
                                        <span> Drag and Drop your files here Or Click here to upload</span>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="form-actions">
                        <input type="hidden" id="url" value="university_offers/<?=$id?>" />
                        <?php
                        if($id == 0)
                            echo '<button type="submit" id="butt" name="save" value="save" class="btn btn-primary"> <i class="fa fa-check"></i> حفظ</button>';
                        else
                            echo '<button type="submit" id="butt" name="edit" value="edit" class="btn btn-primary"><i class="fa fa-check"></i> حفظ</button>';
                        ?>
                        <button type="reset" class="btn btn-inverse"><i class="fa fa-times"></i> إلغاء</button>
                        <?php
                        if($id == 0)
                            echo'<button type="button" id="backword" class="btn btn-second"><i class="fa fa-undo"></i> رجوع</button>';
                        else{
                            echo '<input type="hidden" name="university_offer_id_pk" value="'.$result['university_offer_id_pk'].'"/>

                                <a href="'.base_url().'Admin/university_offers/0"><button type="button" class="btn btn-second"><i class="fa fa-undo"></i> رجوع</button></a>';
                        }
                        ?>
                    </div>
                </div>
            </form>

upload_image函数,我把它放在Helper中

 function upload_image($file_name){
  $CI =& get_instance();

$config['upload_path'] = 'public/uploads/images';

$config['allowed_types'] = 'gif|Gif|ico|ICO|jpg|JPG|jpeg|JPEG|BNG|png|PNG|bmp|BMP|WMV|wmv|MP3|mp3|FLV|flv|SWF|swf';

$config['max_size']    = '1024*8';

$config['encrypt_name']=true;

  $CI->load->library('upload',$config);

if(!  $CI->upload->do_upload($file_name)){

    return  false;

}else{

    $datafile =  $CI->upload->data();

   thumb($datafile);
    watermark($datafile);
    return  $datafile['file_name'];


}}

0 个答案:

没有答案