Главная страница
    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.043 c
3-1205476733
Evgeny V
2008-03-14 09:38
2008.09.14
ADO и параметры


15-1216634664
TUser
2008-07-21 14:04
2008.09.14
Сколько ватт БП и дополнительных вентилияторов


15-1216058333
GrayFace
2008-07-14 21:58
2008.09.14
Система контроля версий кода для VS2005 для удаленной работы


2-1217955652
Alex_C
2008-08-05 21:00
2008.09.14
Мелькание Hint при нажатой клавише Ctrl


15-1216731998
No_Dead
2008-07-22 17:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский