Я пытаюсь загрузить сразу несколько файлов на свой сервер CherryPy.Загрузка файла в ajax в CherryPy
Я следую this tutorial, который показывает код PHP на стороне сервера.
Часть JavaScript проста. Вот краткое изложение того, что он делает:
function FileSelectHandler(e) {
var files = e.target.files || e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload", true);
xhr.setRequestHeader("X_FILENAME", file.name);
xhr.send(file);
}
Я перевел upload.php
, описанный в учебнике в нечто вроде этого:
def upload(self):
[...]
Когда сервер получает запрос, я могу видеть, что cherrypy.request.headers['Content-Length'] == 5676
который длина файла, который я пытаюсь загрузить, поэтому я предполагаю, что весь файл был отправлен на сервер.
Как я могу получить содержимое файла?
См [cherrypy._cprequest.Request.body] (https://cherrypy.readthedocs.org/en/3.3.0/refman/_cprequest.html#cherrypy._cprequest.Request.body). Кажется, вам нужно указать тип содержимого на стороне JS, чтобы предотвратить синтаксический анализ формы, а затем обработать «тело». – jwalker