Форум: "Сети";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
ВнизЗагрузить фаил на сервер Найти похожие ветки
← →
Alex_C (2007-10-23 11:30) [0]Есть страничка, через которую можно загрузить фаил на сервер. Делаю следующее:
const
multipart_boundary = "-----------------------------7cf87224d2020a";
var
PostStr: TStringList;
...
PostStr := TStringList.Create;
PostStr.Add( "Content-type: multipart/form-data, boundary=" + multipart_boundary );
//***
PostStr.Add( "--"+ multipart_boundary );
PostStr.Add( "content-disposition: form-data; name="upfile"; filename="Temp.exe"");
PostStr.Add( "Content-Type: application/octet-stream");
PostStr.Add( "Content-Transfer-Encoding: binary");
PostStr.Add( "" );
Далее здесь как я понял из описания, должно быть содержание этого файла. Вопрос - как бинарный фаил закодировать и поместить сюда?
P.S. Таким методом запрос для заполнения полей делал - все отлично даботает. а вот как не-текстовый фаил поместить - не понял.
← →
umbra © (2007-10-23 11:53) [1]
> а вот как не-текстовый фаил поместить - не понялfstream := TFileStream.Create("Temp.exe", fmOpenRead or fmShareDenyWrite);
sstream := TStringStream.Create("");
sstream.CopyFrom(fstream, 0);
fstream.Free;
PostStr.Add(sstream.DataString);
sstream.Free;
← →
Alex_C (2007-10-23 14:00) [2]Блин спасибо! Собственно так и думал, но вот эту строку не сообразил как правильно написать:
PostStr.Add(sstream.DataString);
Спасибо!
← →
Alex_C (2007-10-23 15:37) [3]Все вроде сделал правильно, но не работает. Может кто чего подскажет?
Вот собственно сам текст:
PostStr := TStringList.Create;
// Заголовок
PostStr.Add( "--"+ multipart_boundary );
PostStr.Add( "Content-Disposition: form-data; name="upfile"; filename=""+
CurrDir + "\Log\UploadToLoTW.tq8"");
PostStr.Add( "Content-type: tq8" );
PostStr.Add( "" );
// Считываем фаил в поток и загружает его
fstream := TFileStream.Create( CurrDir + "\Log\UploadToLoTW.tq8", fmOpenRead+fmShareDenyNone );
sstream := TStringStream.Create("");
sstream.CopyFrom(fstream, 0);
fstream.Free;
PostStr.Add(sstream.DataString);
sstream.Free;
// Добавляем окончание
PostStr.Add( "" );
PostStr.Add( "--" + multipart_boundary + "--" );
// Вычисляем длинну
ContentLength := Length(PostStr.Text);
// Добавляем заголовок
PostStr.Insert( 0, "Content-type: multipart/form-data, boundary=" + multipart_boundary );
PostStr.Insert( 1, "Content-length: " + IntToStr( ContentLength) );
PostStr.Insert( 2, "" );
Вроде все как положено, но фаил не отправляется
← →
Alex_C (2007-10-23 15:39) [4]Вопрос особенно по строке "Content-type: tq8" - это правильно для файла с моим расширением? И правильно ли я вычислил длину?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c