Russian Qt Forum
Май 20, 2024, 00:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Аплоад файла и ошибка с Content-type  (Прочитано 5320 раз)
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);
Записан
Kainit
Гость
« Ответ #1 : Декабрь 05, 2007, 11:05 »

1. В своё время парился с этим, в итоге разозлился, прибил мультипартовость и всё заработало.

2. http://ws.apache.org/commons/tcpmon/
 - возьмите эту тулзу и найдите сайтик, на который можно с веб-формы залить несколько картинок
 - настройте браузер, чтобы он этой тулзой как проксей пользовался
 - протрейсите что будет в результате и найдёте ошибку у себя...
Записан
izoomer
Гость
« Ответ #2 : Сентябрь 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);

а мне помог пример с хидером.
Спасибо.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Сентябрь 24, 2008, 20:07 »

есть еще полезная тулза
wireshark aka ethereal
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 19.