显示用ajax上传的txt文件的内容

Posted

技术标签:

【中文标题】显示用ajax上传的txt文件的内容【英文标题】:display contents of txt file uploaded with ajax 【发布时间】:2013-10-23 14:07:26 【问题描述】:

我已经能够使用 ajax 将 .txt 文件上传到我的网站,但我还想在我的网站上显示 .txt 文件的内容。我不知道该怎么做。谢谢!

这是我的html

<!DOCTYPE html>
<html>
    <head> 
            <script type="text/javascript" src="static/jquery-1.4.2.js"></script>
            <script type="text/javascript" src="static/jquery-ui-1.8.4.custom.min.js"></script>
            <script type='text/javascript' src='static/js_test.js'></script>
            <script type='text/javascript' src='static/jquery.form.js'></script> 

            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
            <script src="http://malsup.github.com/jquery.form.js"></script>
    </head>
    <body>    
            <form action="http://malsup.com/jquery/form/file-echo2.php" method="post" enctype="multipart/form-data">
                <input type="file" name="myfile"/>
                <input type="submit" value="Submit File"/>
            </form>



            <div class="progress">
                <div class="percent">0%</div >
            </div>

            <div id="status"></div>
    </body>
</html>

这是我的 jquery

$(document).ready(function() 

(function() 

var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');

$('form').ajaxForm(
    beforeSend: function() 
        status.empty();
        var percentVal = '0%';
        bar.width(percentVal)
        percent.html(percentVal);
    ,
    uploadProgress: function(event, position, total, percentComplete) 
        var percentVal = percentComplete + '%';
        bar.width(percentVal)
        percent.html(percentVal);
    ,
    success: function() 
        var percentVal = '100%';
        bar.width(percentVal)
        percent.html(percentVal);
    ,
complete: function(xhr) 
    status.html(xhr.responseText);

); 

)();       



);  

这是我的 php

<?php
foreach($_FILES as $file) 
   $n = $file['name'];
    $s = $file['size'];
   if (is_array($n)) 
      $c = count($n);
      for ($i=0; $i < $c; $i++) 
         echo "<br>uploaded: " . $n[$i] . " (" . $s[$i] . " bytes)";
      
   
   else
      echo "<br>uploaded: $n ($s bytes)";

?>

【问题讨论】:

好吧,我认为最好的办法是使用服务器端代码,尽管客户端代码可以使用更新的浏览器来完成 您将上传的文件放在哪里?如果它在您的文档根目录中,那么您可以使用指向该文件的普通 URL 来显示它。如果没有,那么您必须编写一个脚本来检索文件并显示它。 【参考方案1】:

您可以在 ajax 请求中将其发送回:

在文件-echo2.php:

<?php

foreach($_FILES as $file) 
   $n = $file['name'];
   $s = $file['size'];

   if (is_array($n)) 
      $c = count($n);
      for ($i=0; $i < $c; $i++) 
         if (move_uploaded_file($n[$i], '/path/where/you/put/that/file.txt')) 
            echo "uploaded " . $n[$i] . " (" . $s[$i] . " bytes):\n";
            echo file_get_contents('/path/where/you/put/that/file.txt');
         
      
   
   else 
      if (move_uploaded_file($n, '/path/where/you/put/that/file.txt')) 
            echo "uploaded " . $n . " (" . $s . " bytes):\n";
            echo file_get_contents('/path/where/you/put/that/file.txt');
      
   

【讨论】:

谢谢!我不知道文件的路径是什么,所以代替我使用的路径 $file["tmp_name"]【参考方案2】:
var fileText = load('file_name.txt');

您可以在此处找到更多解决方案: http://forum.jquery.com/topic/reading-values-from-text-file

【讨论】:

load()?这是在哪里定义的?它有什么作用?即使在链接的论坛帖子中,除了您从中复制的方法之外,也没有引用现有的 load() 方法,并且该方法没有显示它是如何定义的。 load() 不是原生定义的,也不是在 jQuery 中定义的,请稍后查看链接中的两个帖子。

以上是关于显示用ajax上传的txt文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

JS/前端/H5:实现txt文件上传并读取其中内容

js如何读取本地txt文件中的内容

JAVA利用commons.net.ftp.FTPClient的storeFileStream方法TXT文件上传. 已经转码UTF-16LE,上传后内容乱码

上传文件至数据库并下载

微信文件上传的测试用例

微信文件上传的测试用例