Как загрузить файл и отобразить его информацию - PullRequest
0 голосов
/ 01 августа 2011

Я хочу создать веб-сервис, который будет обрабатывать некоторые файлы.

Вот что я хочу сделать:

  1. Пользователь загружает файл на сервер, используя «форму загрузки», файл сохраняется как временный файл на стороне сервера
  2. Серверный скрипт Python обрабатывает временный файл и выдает некоторую статистику (например, количество строк и слов в файле)
  3. Статистика отображается рядом с «формой загрузки»

Вопрос здесь таков: мне бы хотелось, чтобы файл обрабатывался в фоне сразу после его загрузки и после того, как это будет сделано, .append() произведенных результатов в текущем представлении. Я не хочу назначить сценарий для <form action="processing_script.php">..., поскольку пользователь будет перенаправлен на processing_script.php после нажатия кнопки Upload .

Есть какие-нибудь подсказки? Может быть, какой-нибудь аккуратный вызов ajax?

Ответы [ 3 ]

1 голос
/ 01 августа 2011
 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)
 }
0 голосов
/ 01 августа 2011

Да, я сделал второй запрос AJAX и запустил его с расписанием (например, каждые 10 секунд).он запросит сервер, если загруженный файл будет обработан.сервер может даже выполнять обработку файлов во внешней программе.php-скрипт, который принимает второй ajax-запрос, проверяет состояние READY и дает клиенту ответ YES / NO / FAILED.когда клиент принимает ответ «ДА», он перенаправляет пользователя на страницу результатов.если он принимает НЕТ, он предупреждает пользователя о проблеме.

0 голосов
/ 01 августа 2011

Да, для этого тебе понадобится ajax.Создайте форму как обычно, затем отправьте ее, используя Ajax.Обработка форм может быть выполнена как обычно.

Если вы запустили Google 'Ajax' для загрузки файла, я уверен, что вы сможете найти все, что вам нужно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...