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

Вниз

помогите с download.cgi   Найти похожие ветки 

 
Logo   (2006-04-14 06:35) [0]

Ниже привожу код программы download.cgi. Пытаюсь использовать для скачивания файлов с моего вебсервера фирмы. Для этого в HTMLках вписываю такие строки:
<a href=/scripts/download.cgi?file=/soft/proga1.exe>
<a href=/scripts/download.cgi?file=/soft/proga2.exe>
<a href=/scripts/download.cgi?file=/soft/readme.txt>

Проблема в том, что файл выкачивается не полностью!
Очень надеюсь найти ответ.

Код в студию:

program download;

{$APPTYPE CONSOLE}
uses
SysUtils;

label FinLabel,mBad,mGood;

{$E cgi}

var
sQueryString,sFileName,sTmp,sWWW:String;
fIn:TextFile;
size: Longint;

begin
sWWW:="c:\Inetpub\wwwroot";
sQueryString:=GetEnvironmentVariable("QUERY_STRING");

If length(sQueryString)=0 then goto mBad;

iPos:=Pos("file=",sQueryString);
If iPos=0 then goto mBad
else sFileName:=Copy(sQueryString,6,Length(sQueryString)-iPos);

If Not(FileExists(sWWW+"/"+sFileName)) then goto mBad;

goto mGood;

mBad:
sTmp:="Content-type: text/html";
writeln(sTmp);
writeln;
writeln;
sTmp:="<html>";
writeln(sTmp);
sTmp:="<head>";
writeln(sTmp);
sTmp:="<meta http-equiv="Refresh" Content="5; URL=http://mysite/">"
writeln(sTmp);
sTmp:="<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">";
writeln(sTmp);
sTmp:="<title>Ошибка.</title>";
writeln(sTmp);
sTmp:="</head>";
writeln(sTmp);
sTmp:="<body>Ошибка.</body></html>";
writeln(sTmp);
goto FinLabel;

mGood:
AssignFile(fIn,sWWW+"/"+sFileName);
Reset(fIn);
// size:=FileSize(fIn)*128;

sTmp:="Content-Type: application/octet-stream";
writeln(sTmp);
sTmp:="Content-Transfer-Encoding: binary";
writeln(sTmp);
// sTmp:="Content-Length: "+IntToStr(size);
// writeln(sTmp);

sTmp:="Content-Disposition: attachment; filename="+sFileName;
writeln(sTmp);

writeln;
writeln;

While Not(EOF(fIn)) do begin
 Readln(fIn,sTmp);
 Writeln(sTmp);
end;
CloseFile (fIn);

FinLabel:

end.


 
Dmitrij_K   (2006-04-14 08:52) [1]

Не читай Readln бинарные файлы.
См. TFileStream, FileOpen, CreateFile


 
Чапаев ©   (2006-04-14 12:06) [2]


> writeln(sTmp);
>
> writeln;
> writeln;

Неправильно, должна быть одна пустая строка. Ну и про ReadLn уже сказали.


 
SpellCaster   (2006-04-14 17:12) [3]

Ууууууу.... goto... как все запущено...



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
15-1144441168
NotDesigner
2006-04-08 00:19
2006.04.30
Помогите сделать логотип


15-1144675623
oldman
2006-04-10 17:27
2006.04.30
оффтоп, но смешно...


15-1144576964
homm
2006-04-09 14:02
2006.04.30
PHP: Регулярные выражения


15-1144732818
Alkid
2006-04-11 09:20
2006.04.30
С Днём рождения! 11 апреля.


15-1144226986
Kolan
2006-04-05 12:49
2006.04.30
Получение и сохранение данных на большом промежутке времени