【问题标题】:How to upload a file and display its information如何上传文件并显示其信息
【发布时间】:2011-08-01 07:12:18
【问题描述】:

我想构建一个可以处理一些文件的 Web 服务。

这是我想做的:

  1. 用户使用“上传表单”将文件上传到服务器,该文件在服务器端保存为临时文件
  2. 服务器端 python 脚本处理临时文件并生成一些统计信息(例如,文件中的行数和单词数)
  3. 统计信息显示在“上传表单”附近

这里的问题是:我希望文件在上传后就在后台进行处理,完成后,.append() 生成的结果到当前视图。我不想将脚本分配给<form action="processing_script.php">...,因为在单击上传按钮后用户将被重定向到processing_script.php。

有什么线索吗?也许是一些简洁的 ajax 调用?

【问题讨论】:

标签: php jquery python html ajax


【解决方案1】:
 function ajaxRequest(){
  var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
  if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
   for (var i=0; i<activexmodes.length; i++){
    try{
     return new ActiveXObject(activexmodes[i])
    }
    catch(e){
     //suppress error
    }
   }
  }
  else if (window.XMLHttpRequest) // if Mozilla, Safari etc
   return new XMLHttpRequest()
  else
   return false
 }

 function postFile(){
 var mypostrequest=new ajaxRequest()
 mypostrequest.onreadystatechange=function(){
  if (mypostrequest.readyState==4){
   if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
    document.getElementById("my_Result_tag").innerHTML=mypostrequest.responseText //this is where the results will be put!
   }
   else{
    alert("An error has occured making the request")
   }
  }
 }
 var file = document.getElementById("my_file");
 var parameters="file="+file //i am not sure of this peice though
 mypostrequest.open("POST", "basicform.php", true)
 mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
 mypostrequest.send(parameters)
 }

【讨论】:

  • 包装所有肮脏的 ajax 东西不能解决兼容性问题吗?
  • 是的......只是为了演示
【解决方案2】:

是的,你需要 ajax。像往常一样创建表单,然后使用 Ajax 提交它。表单处理可以照常进行。

如果您在 Google 上搜索“文件上传 Ajax”,我相信您可以找到所需的一切 :)

【讨论】:

    【解决方案3】:

    是的,我提出了第二个 ajax 请求并按计划运行它(例如每 10 秒)。如果上传的文件被处理,它将查询服务器。服务器甚至可以在外部程序中进行文件处理。接受第二个 ajax 请求的 php 脚本检查一些 READY 状态并给客户端答案是/否/失败。当客户端接受“是”回答时,它会将用户重新发送到“结果”页面。如果它接受 NO,它会提醒用户该问题。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多