FTP上传开发,上传成功后不能修改文件名(50分)

  • 主题发起人 主题发起人 zzlyx
  • 开始时间 开始时间
Z

zzlyx

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个文件上传软件,在WINDOW下的FTP服务器都能正常上传并修改名字
但是如果上传到LINUX下的FTP 服务器时,可以正常上传,但当传完成时,修改名称时会提示出错。上传的程序如下:
Result := False;
try
InUploadData := True;
if RemoteFileName = '' then RemoteFileName := ExtractFileName(FullFileName +'.txt');
IdFTP.Host := FTPServer;
IdFTP.Username := FTPUser;
IdFTP.Password := FTPPass;
if IdFTP.Connected then IdFTP.Disconnect;
IdFTP.Connect;
IdFTP.ChangeDir(FTPDir);
IdFTP.TransferType := ftBinary;
if CreateTempFile='1' then
begin
IdFTP.Put(FullFileName +'.txt', RemoteFileName + '.TMP');
try
IdFTP.Rename(IdFTP.RetrieveCurrentDir + '/'+ RemoteFileName + '.TMP', RemoteFileName +'.ITF' );
except
on E: Exception do
begin
LcyErrLog('FTP', '服务器将*.TMP修改为*.ITF出错', E.Message);
PutToDebugLog('服务器将*.TMP修改为*.ITF出错'+E.Message);
end;
end ;
end
else
begin
IdFTP.Put(FullFileName +'.txt', RemoteFileName + '.ITF');
end;
IdFTP.Put(FullFileName +'.CHK', RemoteFileName + '.CHK');

IdFTP.Disconnect;
BackupFile(FullFileName+'.txt', BackupPath); //移动文件
BackupFile(FullFileName+'.CHK', BackupPath); //移动文件
IdFTP.Disconnect;
Result := True;
except
on E: Exception do
LcyErrLog('FTP', '上传数据出错', E.Message);
end;
,请各位相互交流一下。
 
是不是LINUX下的FTP 服务器权限问题.
 
但是通过CUTEFTP这个软件可以重命名已上传的文件。
 
首先要确定,LINUX服务器上是否开放了文件“修改”权限,如果没有开放那么是不可能修改的。
其次,CUTEFTP的重名上传,可能是在上传之前就重新命名了,所以和服务器是没有任何关系的。
到此这个问题也找到了一个解决办法,就是在上传前先在本地把文件重新命名,然后上传,上传完成后再把本地文件名改回来就可以了,或者使用副本上传,想怎么改就怎么改名,连本地文件都没有影响了,传完删除就可以。这样就回避了服务器权限的问题。
 
程序开发的要求是先将以*.tmp的文件上传,上传成功后,将 *.tmp改名为*.itf的文件
 
但是通过CUTEFTP这个软件登录后,可以修改每一个文件的文件名。
 
哦,那就不是权限的问题了,会不会是LINUX与WINDOWS文件格式差异的问题??
 
后退
顶部