如何用编程的方法将文件拷贝到局域网内的一个共享文件夹里? ( 积分: 30 )

  • 主题发起人 主题发起人 wei0916
  • 开始时间 开始时间
W

wei0916

Unregistered / Unconfirmed
GUEST, unregistred user!
已经知道对方的IP(192.168.72.8),上面有一个共享的文件夹ABC,如何从自已的电脑上(192.168.72.9)将一个123.TXT拷贝到这个192.168.72.8的文件夹ABC呢.请大虾们指教.谢了
 
已经知道对方的IP(192.168.72.8),上面有一个共享的文件夹ABC,如何从自已的电脑上(192.168.72.9)将一个123.TXT拷贝到这个192.168.72.8的文件夹ABC呢.请大虾们指教.谢了
 
先应射一个网络驱动器,然后在COPY文件!
 
试试看吧!

uses

SysUntils,Classes;

procedure copyfile(Sfname.Dfname:string):far;export;//带路径的文件名;

Var

Sourcef,Destinef:file;

NumRead,NumWritten:Integer;

Buf:array[1..4096] of char;//定义缓冲区;

Begin

AssignFile(Sourcef,dfname);

Reset(Sourcef,1);

AssignFile(Destinef,1);

Rewrite(Destinef,1);

Repeat

BlockRead(Sourcef,Buf,SizeOf(Buf),Numread);//读源文件

BlockWrite(destinef,buf,NumRead,NumWritten);//写目标文件;

Until (Numread=0) or (Numwritten<>numread);

closeFile(soucef);

Closefile(destinef);

end;
 
如果共享文件夹不需要验证直接使用copy('123.txt','//192.168.72.9/abc/123.txt',false);
如果需要验证可以使用WNetAddConnection建立网络映射,然后copy('123.txt','z:/123.txt',false),当然前提是知道用户名和密码
 
没有效果呀.我是想将一个本地文件夹里的全部文件拷贝到另一台电脑上的一个共享文件夹里.还有办法吗.copyfile只能拷贝一个文件.
royal1442的过程错了,编译不过,而且程序是个过程,哪来的FAR返回类型.哪位再帮帮我,谢了.
 
使用Indy控件啊.
 
晕。。。你自己为这个文件夹里的所有文件做列表啊。。。。先做个遍历,读出当前层所有的文件和文件夹,然后循环复制文件

系统的复制也是一个文件一个文件的复制啊。。。。。-_-!
你说的是不是显示的进度啊。。。。你可以用CopyFileEX+CopyProgressRoutine来做

另外看看这个,应该对你有帮助:

VOID CopyFilesInCopyList(VOID);

CopyFilesInCopyList sorts the file descriptions in the global list of installable files (the copy list) and then copies them from their source directory to their destination directory.

Comments

The files are sorted by their source disk identification number to minimize the number of times the user has to insert disks during the installation. The source and destination directories are specified in the functions that add the files to the copy list.

抱歉我英语不好,没办法给你翻译过来。。。。-_-!
 
我来说2句吧。。。
把我下面的UNIT加入到你的项目中去,
再这样调用就可以了。。。
//**********下面是复制数据到远程服务器**********
RemoteCopyFile(
'//Dell/d$', //远程目录名
'administrator', //用户名
'yyzzxx', //PWD
'c:/信息卡/用户资料库.dbc', //本地源文件名(全)
'用户资料库.dbc'); //目标文件名(仅需文件名)

==========远程复制文件====================================================
UNIT Unit2;

INTERFACE

USES
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;

FUNCTION RemoteCopyFile(
ARemote, //远程目录名
AUserID, //用户名
APassword, //PWD
ASour, //源文件名(全)
ADest //目标文件名(仅文件名)
: STRING): Cardinal; //返回0表示成功,否则为错误代码

IMPLEMENTATION

FUNCTION RemoteCopyFile(
ARemote, //远程目录名
AUserID, //用户名
APassword, //PWD
ASour, //源文件名(全)
ADest //目标文件名(仅文件名)
: STRING): Cardinal; //返回0表示成功,否则为错误代码
VAR
nr : TNetResource;
BEGIN
FillChar(nr, SizeOf(nr), 0);
nr.dwType := RESOURCETYPE_ANY;
nr.lpRemoteName := PChar(ARemote); //参数1
nr.lpLocalName := 'X:';
nr.lpProvider := '';
Result := WNetAddConnection2(nr, PChar(APassword), PChar(AUserID), 0);
IF Result <> 0 THEN
Exit;
ADest := 'X:' + Trim(ADest);
IF NOT CopyFile(PChar(ASour), PChar(ADest), false) THEN
Result := GetLastError;
WNetCancelConnection2('X:', 0, True);
END;

END.
 
多谢各位帮忙了,本来是想这样的,首先看对方电脑有没有这个共享文件夹,如果有的话就拷贝,没有的话就不拷贝.因为如果用户输入了一个在对方电脑上不存在的共享文件夹名;那么就会出错.我想在程序里避开这种错误.
 
后退
顶部