我正在尝试使用codeigniter中的ajax上传多个文件.我的ajax帖子工作正常,但我不知道如何在我的控制器中获取帖子文件.
我尝试过这种方式,但它不起作用.请帮忙.谢谢.
我尝试过这种方式,但它不起作用.请帮忙.谢谢.
<form method="post" name="upload_files" action="<?PHP echo base_url(); ?>home/upload_files" id="form_files" enctype="multipart/form-data"> <h4 style="float: left">Add files. (file types .png,.jpeg,.dwg,.pdf,jpg) max: 10Mb <span style="color:red;" id ="err_type"> * </span></h4> <div class=from-section> <div class="row"> <div class="span4" id="image" > <div class="cart-total" id="clone_image" data-provides="fileupload"> <div class="form-group has-success has-Feedback"> <input class="form-control" type="file" name="files[]" accept="image/*" /> </div> </div> </div><!-- /.span4 --> </div><!-- /.row --> </div> <div class="cart-total"> <a id="another_image" class="btn btn-default" style="height: 45px;padding: 12px 12px; margin-right: 10px; ">+ Add More Files</a> <a id="submit_files" class="rx-bottom" >Submit Files</a> </div> </form>
阿贾克斯
<script type="text/javascript"> $('#submit_files').click(function() { var formData = new FormData($('#form_files')[0]); $.ajax({ url: "<?PHP echo base_url('home/upload_files/'); ?>",type: "POST",data: formData,mimeType: "multipart/form-data",processData: false,contentType: false,success: function(res) { console.log("success"); },error: function(res) { console.log("error"); } }); }); </script>
我的控制台正在记录成功消息
CONTROLLER
public function upload_files(){ $order_id = 123; if(!$order_id){ redirect('home/instant_quote','refresh'); }else{ $this->load->library('upload'); //$files = $this->input->post(); $files = $_FILES; if($files){ for( $i = 1; $i < 20; $i++) { $config = array(); $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'jpg|jpeg|png|pdf|dwg|zip'; $config['max_size'] = '11000'; $config['file_name'] = 'order_'.$order_id.'_'.$i; $config['overwrite'] = false; $this->upload->initialize($config); $this->upload->do_upload('files'.$i); $image_data = array('upload_data' => $this->upload->data()); if($image_data["upload_data"]["file_size"]){ $inserted['order'] = $i ; $inserted['name'] = $image_data["upload_data"]["file_name"]; $inserted['extension'] = $image_data["upload_data"]["file_ext"]; $inserted['type'] = $image_data["upload_data"]["file_type"]; $inserted['size'] = $image_data["upload_data"]["file_size"]; $prop = $this->home->insert_files($inserted); } } }else{ $this->load->view('comman/header.PHP'); $this->load->view('home/add_files.PHP'); $this->load->view('comman/footer.PHP'); } } }
这是我在记录表单数据时看到的内容
解决方法
您可以在控制器中使用它:
function upload(){ if(!empty($_FILES)){ $type= $_FILES["files0"]["type"]; //files0 is your input file name $size= $_FILES["files0"]["size"]; $file_name = $_FILES["files0"]["name"]; $source = $_FILES['files0']['tmp_name']; $dir = "./uploads/"; $file = $dir . $file_name; if(!file_exists ($file )) { move_uploaded_file($source,$file ); exit("File has been uploaded"); } else { echo "File exist"; } } $this->load->view('v_test'); }
而对于你的ajax jquery:
//add this to your head html <script> var base_url = "<?PHP echo base_url(); ?>"; </script>
而且,这是你的ajax电话:
$("#submit_files").click(function() { var formData = new FormData($("#form_files")[0]); $.ajax({ url: base_url + "home/upload_files",type: 'POST',async: false,success: function (data) { alert(data) },cache: false,processData: false }); return false; });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。