在使用IdFTP控制元件時,我通過changedir動態的改變IdFTPserver的目錄,IdFTPserver那邊應該怎么操作?還有Idserver那邊是怎么接收這個信號的????。。。。請各位大神指導啊。。。。
uj5u.com熱心網友回復:
procedure TForm1.IdFTPServer1ChangeDirectory(ASender: TIdFTPServerThread;var VDirectory: String);
{*將目錄調整為上一級目錄*}
Function EraseLastString(Source:String;EraseChar:Char):String;
var
BasePoint,DymaPoint:integer;
StrLen:Integer;
begin
StrLen:=Length(Source);
if StrLen<=0 then
Result:=Source;
//已經是根目錄
DymaPoint:=-1;
//初始化指標
for BasePoint:=1 to StrLen do
begin
if Source[BasePoint]=EraseChar then
DymaPoint:=BasePoint;
//定位目錄分隔字符
end;
if DymaPoint=-1 then
begin
Result:=EraseChar
end
else
begin
SetLength(Source,DymaPoint-1);
Result:=Source;
end;
end;
var
CurrentDir:String;
begin
CurrentDir:=ASender.CurrentDir ;
{判斷當前的目錄是否為根目錄}
If VDirectory='..\' then
begin
VDirectory:=EraseLastString(CurrentDir,'\');
end;
end;
uj5u.com熱心網友回復:
這個是我在上傳檔案時來判斷要放在服務器的哪個檔案夾里面的代碼procedure TFServer.IdFTPServer1StoreFile(ASender: TIdFTPServerThread;
const AFileName: String; AAppend: Boolean; var VStream: TStream);
var
NewFile:String;
begin
//將FTP中使用的目錄符號“/”轉換為Windows中的目錄符號 “\”
NewFile :=ChangeFolderChar(WorkDirectory.Text+AFileName);
//在FTP服務器中建立相應檔案,并指定該檔案的訪問介面
VStream:=TFileStream.Create(NewFile,fmCreate);
end;
Function ChangeFolderChar(Str:String):String;
//將FTP中使用的目錄符號“/”轉換為Windows中的目錄符號 “\”的函式
var
I:Integer;
mystr : string;
begin
For I:=0 to length(Str)-1 do
begin
if Str[I]='/' then
Str[I]:='\';
end;
Result:=Str;
end;
然后執行以后newfile不對正常的是C:\檔案夾\a.txt這里變成了C:\\\檔案夾\a.txt然后就報錯無法找到這個目錄,你看看能不能幫幫我啊
uj5u.com熱心網友回復:
你用我的試試
uj5u.com熱心網友回復:
你這個我不知道怎么嵌入到我的程式里,我把我程式發給你,你幫我看看可以嗎?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143644.html
標籤:網絡通信/分布式開發
