使用jquery ajax和codeigniter上传csv文件

时间:2017-03-18 12:16:56

标签: jquery ajax codeigniter

这里我想上传并使用jquery ajax函数移动csv文件。

$("#file").change(function() { 
  alert($("#file").val());
  $.ajax({
    url: "<?php echo base_url(); ?>index.php/Task_controller/upload_tasksquestion",
    type: "post",
    dataType: 'json',
    processData: false,
    contentType: false,
    data: {file: $("#file").val()},
    success: function(text) {
        alert(text);
        if(text == "success") {
            alert("Your image was uploaded successfully");
        }
    },
    error: function() {
        alert("An error occured, please try again.");         
    }
  });   
});

我的HTML代码是:

< input type="file" class="form-control" id="file" name="file">

我正在测试控制器功能上传的文件名 比如$ this-&gt; input-&gt; post('file');

但它没有来到控制器,我想将该文件移动到一个文件夹中。 请帮助我,我在做错误...

我的服务器端代码是:

$curdate=date('Y-m-d');
$path='./assets/fileuploads/';
$file=basename($_FILES['file']['name']);

list($txt, $ext) = explode(".", $file);
$actual_file_name = time().substr($txt, 5).".".$ext;
if(move_uploaded_file($_FILES['file']['tmp_name'],$path.$actual_file_name))

1 个答案:

答案 0 :(得分:0)

您需要使用FormData通过AJAX发送文件。

将文件存储在FormData对象中,并将对象作为data传递。

$("#file").change(function() {
    var fd = new FormData();
    fd.append('file', this.files[0]); // since this is your file input

    $.ajax({
        url: "<?php echo base_url(); ?>index.php/Task_controller/upload_tasksquestion",
        type: "post",
        dataType: 'json',
        processData: false, // important
        contentType: false, // important
        data: fd,
        success: function(text) {
            alert(text);
            if(text == "success") {
                alert("Your image was uploaded successfully");
            }
        },
        error: function() {
            alert("An error occured, please try again.");         
        }
    });
});

阅读File Uploading Class(尤其是来自“控制器”部分),了解如何处理服务器端的文件。