Главная страница
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.044 c
2-1144736119
lionmen
2006-04-11 10:15
2006.04.30
Срочно!!!


4-1139436066
AndreyNew
2006-02-09 01:01
2006.04.30
metafile на win API


2-1144902493
Roman_K
2006-04-13 08:28
2006.04.30
Как вставить exe файл в прогу


15-1144524924
Ньюбер
2006-04-08 23:35
2006.04.30
Собираем кучу ссылок в одном месте!


2-1144834941
Acidlex
2006-04-12 13:42
2006.04.30
dbf