Название: Аплоад файла и ошибка с Content-type
Отправлено: troorl от Декабрь 04, 2007, 03:06
Привет. Я хочу загружать некий файл (картинка, png) на сервер. Форма отправки выглядит так: <form method=post action="/en/upload/" enctype="multipart/form-data"> <tr> <input type=file name=file></td> <input class=b type=submit value="Upload"></td> </form> Формирую заголовок и загружаю. Если не указывать Content-type файла, то сервер ругается на неверный тип файла (логично). Если указать "Content-type: image/png", то сервер возвращает ошибку. Если указать любой другой тип файла, то сервер просто говорит, что тип неверный (как в первом случае). Что же делать, чтобы загрузить этот злосчастный PNG? QString boundary = "AaB03xGtroorl3984"; QHttpRequestHeader header("POST", "/en/upload/", 1, 1); header.setValue("Host", "piccy.info"); header.setValue("Content-type", "multipart/form-data; boundary=" + boundary); header.setValue("Cache-Control", "no-cache"); header.setValue("Accept","*/*"); QByteArray byt(openFilesPath.toUtf8()); bytes.append("--" + boundary + "\r\n"); bytes.append("content-disposition: "); bytes.append("form-data; name=\"file\"; filename=\"" + byt + "\"\r\n"); //bytes.append("Content-type: image/png\r\n"); bytes.append("Content-Transfer-Encoding: binary\r\n"); bytes.append("\r\n"); bytes.append(userfile->readAll()); userfile->close(); // the file is opened earlier in the code bytes.append("\r\n"); bytes.append("--" + boundary + "--"); int contentLength = bytes.length(); header.setContentLength(contentLength);
http->setHost("piccy.info"); bool httpRequestAborted = false; httpGetId = http->request(header, bytes);
Название: Re: Аплоад файла и ошибка с Content-type
Отправлено: Kainit от Декабрь 05, 2007, 11:05
1. В своё время парился с этим, в итоге разозлился, прибил мультипартовость и всё заработало.
2. http://ws.apache.org/commons/tcpmon/ (http://ws.apache.org/commons/tcpmon/) - возьмите эту тулзу и найдите сайтик, на который можно с веб-формы залить несколько картинок - настройте браузер, чтобы он этой тулзой как проксей пользовался - протрейсите что будет в результате и найдёте ошибку у себя...
Название: Re: Аплоад файла и ошибка с Content-type
Отправлено: izoomer от Сентябрь 24, 2008, 18:23
Привет. Я хочу загружать некий файл (картинка, png) на сервер. Форма отправки выглядит так: <form method=post action="/en/upload/" enctype="multipart/form-data"> <tr> <input type=file name=file></td> <input class=b type=submit value="Upload"></td> </form> Формирую заголовок и загружаю. Если не указывать Content-type файла, то сервер ругается на неверный тип файла (логично). Если указать "Content-type: image/png", то сервер возвращает ошибку. Если указать любой другой тип файла, то сервер просто говорит, что тип неверный (как в первом случае). Что же делать, чтобы загрузить этот злосчастный PNG? QString boundary = "AaB03xGtroorl3984"; QHttpRequestHeader header("POST", "/en/upload/", 1, 1); header.setValue("Host", "piccy.info"); header.setValue("Content-type", "multipart/form-data; boundary=" + boundary); header.setValue("Cache-Control", "no-cache"); header.setValue("Accept","*/*"); QByteArray byt(openFilesPath.toUtf8()); bytes.append("--" + boundary + "\r\n"); bytes.append("content-disposition: "); bytes.append("form-data; name=\"file\"; filename=\"" + byt + "\"\r\n"); //bytes.append("Content-type: image/png\r\n"); bytes.append("Content-Transfer-Encoding: binary\r\n"); bytes.append("\r\n"); bytes.append(userfile->readAll()); userfile->close(); // the file is opened earlier in the code bytes.append("\r\n"); bytes.append("--" + boundary + "--"); int contentLength = bytes.length(); header.setContentLength(contentLength);
http->setHost("piccy.info"); bool httpRequestAborted = false; httpGetId = http->request(header, bytes); а мне помог пример с хидером. Спасибо.
Название: Re: Аплоад файла и ошибка с Content-type
Отправлено: Admin от Сентябрь 24, 2008, 20:07
есть еще полезная тулза wireshark aka ethereal
|