2012-12-27 139 views
1

我正在上传csv文件,我需要上传大的csv文件,然后需要插入数据库与字段映射。我这样做使用Jquery它没有显示任何错误只是显示到firbug红色的URL。我没有得到什么问题?这是我的脚本。如何上传打开并阅读大型(20 MB)csv文件?

<script src="js/jquery.form.js"></script> 
    <script src="js/create_input.js"></script> 
    <script> 
     $(document).ready(function() { 
      $('#UploadForm').on('submit', function(e) { 
       e.preventDefault(); 
       var value= $("#valS").val(); 
       var host=$('#host').val(); 
       //alert(host); 
       $(this).ajaxSubmit({ 
        type: "POST", 
        url: host+"views/excel_file_import.php", 
        data: {value: value}, 
        success: function(html){ 
        $('#Exceloutput').html(html); 
        } 
       }); 
      }); 
     }); 

    $(document).ready(function() { 
    $("#updatefields").click(function(){ 
    var arrayOfValues = $(".bookDetails select").map(function (i, el) { return  $(el).val(); }).get(); 
    var fileName= $("#excelfile").val(); 
    var csvState= $("#state_csv").val(); 
    var host=$('#host').val(); 
    $.ajax({ 
     type: "POST", 
     url: host+"views/update_fields.php", 
     data:{str:arrayOfValues, fileName:fileName, csvState:csvState}, 
     success: function(msg){ 
      $('#fieldUpdate').html(msg); 
      } 
     }); 

    return false; 

    }); 
    }); 
    </script> 
    <?php 
    $host=$_SERVER['HTTP_REFERER']; 
    $url=substr($host,0,-9); 
    ?> 
    <input type="hidden" value="<?php echo $url; ?>" id="host"> 
    <h1 class="page-title">Upload Csv File</h1> 
    <div class="container_12 clearfix leading"> 
    <div class="grid_12" id="edit-form"> 


    <form action="<?php echo $url; ?>views/excel_file_import.php" method="post"  enctype="multipart/form-data" id="UploadForm" class="form has-validation"> 

     <div class="clearfix"> 
       <label for="form-upload" class="form-label">Upload File<em>*</em></label> 
       <div class="form-input"> 
        <input type="file" size="50" class="text" id="excelfile" name="excelfile" required="required"/> 
        <input type="hidden" size="50" class="text" id="valS" name="valS" value="1" required="required"/> 
       </div> 
    </div> 

    <div class="form-action clearfix"> 
      <button class="button class-button" type="submit" id="SubmitButton">Upload</button> 
      <button class="button class-button" type="submit" id="updatefields" name="updatefields">UpdateExcel</button> 
    </div> 


    </form> 
    <div id='fieldUpdate'> 
    </div> 
    <div id='Exceloutput'> 
    </div> 

    </div> 
    </div> 

这是excel_file_import.php代码。

<?php 
include("../common/connection.php"); 
if(isset($_POST)) 
{ 
    $database= "test2"; 
    $filename = 'test-'.$_FILES['excelfile']['name']; 
    $value= $_POST['value']; 
    $copy= move_uploaded_file($_FILES["excelfile"]["tmp_name"],"../files/".$filename); 
    if($copy) 
    { echo "Upload Success";?> 

<?php 
} 

} 
?> 
+0

我没有在这里看到一个上传控件。你不能通过vanilla ajax上传文件。 – Charles

+0

你有没有包括jQuery。 – Jai

回答

0

你尝过php.ini文件增加了文件上传限制:

file_uploads = On 
upload_max_filesize = 20M //needs to be in {x}M format 

在这里看到更多的信息:

  1. http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes
  2. http://davidwalsh.name/increase-php-file-upload-limit-using-php-ini
  3. http://wiki.lunarpages.com/Increase_php.ini_Upload_Limit
  4. http://www.radinks.com/upload/config.php
+0

是的,我增加了upload_max_filesize,但没有改变。 – user1523311

+0

你有没有包含jquery? – Jai

+0

我的意思是** ** – Jai

0

我正在做这个使用jQuery。它没有显示任何错误。它只是显示成红色的网址到firbug

这两个文件都驻留在同一个域? HTML和PHP两者? Firebug显示红色网址,因为跨域ajax请求不被允许正常

+0

是的两个文件都在同一个域中。当我上传带有少量数据的csv文件时,它会成功上传文件,但是当我尝试上传8mb文件时,它显示红色的网址。 – user1523311

+0

然后根据@ Jai的回答寻找解决方案。同时检查你的超时值,因为显然上传一个大的填充需要更长的时间,你的jquery可能会超时 –

0

要在服务器上上传大文件,请在php.ini文件中检查这些设置,如果您没有访问php.ini文件,它htaccess文件。增加这些文件上传的价值根据您的要求。

max_input_time设置1000 的max_execution_time 1000 的post_max_size 1000M max_file_uploads 50 的upload_max_filesize 1000M