Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.072 c
4-1196408923
serg128
2007-11-30 10:48
2008.09.14
Как определить загрузку процессора?


2-1217917268
kate158
2008-08-05 10:21
2008.09.14
вывод из реестра адреса е-mail


15-1215880737
No_Dead
2008-07-12 20:38
2008.09.14
от нечего делать — задумался (IT и автомобили)


2-1217714068
KilkennyCat
2008-08-03 01:54
2008.09.14
Где рисуется бордер компонента?


15-1216964290
Медвежонок Пятачок
2008-07-25 09:38
2008.09.14
Шутка или где?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский