В предыдущем посте я пытался загрузить файл на сервер, используя HTML и Javascript. Я столкнулся с несколькими проблемами с моей реализацией, поэтому я выбрал другой подход. У меня есть HTML-форма и скрипт Python в каталоге cgi моего веб-сервера. Вот мой HTML-код ...
<html>
<head>
<script type="text/javascript">
function loadXMLDoc(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{
// code for IE6, IE5 seriously, why do I bother?
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("outputDiv").innerHTML=xmlhttp.responseText;
}
}
var file = document.getElementById('idexample').value;
xmlhttp.open("GET","/cgi/ajax.py?uploadFile="+file,true);
xmlhttp.send();
}
</script>
</head>
<body onload="changeInput()">
<form name = "form_input" enctype="multipart/form-data" method="POST">
<input type="file" ACCEPT="text/html" name="uploadFile" id="idexample" />
<button type="button" onclick="loadXMLDoc()">Enter</button>
</form>
<div id="outputDiv"></div>
</body>
</html>
Я использую AJAX, потому что мне пришло в голову, что мой скрипт cgi может занять до нескольких минут, в зависимости от файла, который вводит пользователь. Я пытаюсь получить содержимое файла, переданного в мой CGI-скрипт на python, и распечатать его на странице. Все, что я получаю, это "C: \ fakepath \". То, что я хочу сделать, это получить содержимое файла. Вот мой скрипт cgi ...
#!/usr/bin/python
import cgi
form = cgi.FieldStorage()
print 'Content-Type: text/html\n'
if form.has_key('uploadFile'):
print str(form['uploadFile'].value)
else:
print 'no file'
Также я должен использовать
xmlhttp.open("POST","/cgi/ajax.py",true);
вместо
xmlhttp.open("GET","/cgi/ajax.py?uploadFile="+file,true);
Я пробовал оба, но POST даже не возвращает имя моего файла. Также мне пришло в голову, что я прочитал, что мне могут даже не понадобиться теги в моем скрипте, так как я отправляю эту информацию, используя javascript. Это правда. Моя страница работает без тегов формы (по крайней мере, в Chrome и Firefox).