Главная страница
    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
6-1193251938
Leron
2007-10-24 22:52
2008.09.14
Домашняя сеть + инет + локалка


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


15-1216620114
Vlad Oshin
2008-07-21 10:01
2008.09.14
Постоянно в памяти висит процесс WinWord.exe


2-1217770915
mokmoc
2008-08-03 17:41
2008.09.14
TLabel + Paint + Align


2-1217424279
@!!ex
2008-07-30 17:24
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский