Всем привет! В данный момент изучаю cgi скрипты на Питоне. Захотелось реализовать сохранение файла на сервере,при отправке его пользователем (нажатие на кнопку в html форме). Реализовал это как в мануале : http://cgi.tutorial.codepoint.net/big-file-upload
Однако при отправке туда файла формата csv,содержащего 100 000 строк я получаю ответ об успешном окончании записи,но записывается очень маленькое количество строк (в среднем около 30000) и процесс как будто бы просто обрывается. В чем могут быть причины?
Скрипт:
Настройки сервера самые обычные, из туториалов :
Заранее спасибо за отклик!
Однако при отправке туда файла формата csv,содержащего 100 000 строк я получаю ответ об успешном окончании записи,но записывается очень маленькое количество строк (в среднем около 30000) и процесс как будто бы просто обрывается. В чем могут быть причины?
Скрипт:
Код:
# -*- coding: utf-8 -*-
import cgi, os
import cgitb
cgitb.enable()
try: # Windows needs stdio set for binary mode.
import msvcrt
msvcrt.setmode (0, os.O_BINARY) # stdin = 0
msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
pass
form = cgi.FieldStorage()
# Generator to buffer file chunks
def fbuffer(f, chunk_size=1024):
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
# A nested FieldStorage instance holds the file
fileitem = form['file']
# Test if the file was uploaded
if fileitem.filename:
fn = os.path.basename(fileitem.filename)
f = open('C:/Users/timna/' + fn, 'wb')
# Read the file in chunks
for chunk in fbuffer(fileitem.file):
f.write(chunk)
f.close()
Настройки сервера самые обычные, из туториалов :
Код:
# -*- coding: utf-8 -*-
from http.server import HTTPServer, CGIHTTPRequestHandler
server_address = ("", 8000)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()
Заранее спасибо за отклик!
Последнее редактирование: