Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

Загрузить фаил на сервер   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
2-1217687765
BlueDragon
2008-08-02 18:36
2008.09.14
Поиск скрытых файлов


15-1216144094
ZIvas
2008-07-15 21:48
2008.09.14
С чего начинать изучение


2-1217445190
@!!ex
2008-07-30 23:13
2008.09.14
Не понимаЮ. почему не работает GetModuleFileNameA


2-1217518989
Евгений Р.
2008-07-31 19:43
2008.09.14
Есть ли такой компонент?


15-1216793329
Jeer
2008-07-23 10:08
2008.09.14
Linux Festival