2014-03-03 35 views
0

我试图通过ftp从文件系统上传文件,我可以用这个广告http://www.oracle-base.com/articles/misc/ftp-from-plsql.php的例子没有问题连接,我设法进行连接,但是当我上传的文件我标记错误550文件没有找到,我想这就是为什么我在程序中放入urls,因为我来自oracle xe windows。的Oracle XE FTP上传

有谁知道,如果我把网址是否正确?或者我做错了什么?

这里是我的代码:

DECLARE 
    l_conn UTL_TCP.connection; 
BEGIN 
    l_conn := ftp.login('IPADDRES', '21', 'USR', 'PWD'); 
    ftp.binary(l_conn); 
    ftp.get(l_conn, 
     'C:\oraclexe\app\oracle\files\file.pdf', 
     'C:\FTP\files', 
     'file.pdf'); 
    ftp.logout(l_conn); 
END; 
+1

你试图检索文件从远程系统传送到Oracle服务器,还是将文件从Oracle服务器发送到远程?它看起来像第三个参数需要是Oracle'DIRECTORY'对象名称而不是文件路径;不知道这与错误有关。 –

+0

OK,读了一下才知道原来参数UTL_FILE_DIR已经过时了,所以用这个命令创建两个文件夹: 创建或替换目录FILE_ORIGIN为“C:\ OracleXE \程序\ ORACLE \文件”; 创建或替换目录FILE_DESTINY为'C:\ ftp'​​; 授予读取,写入目录FILE_ORIGIN公开; 授予读取,在目录FILE_DESTINY上写入public; 所以我现在的代码如下: l_conn:= ftp.login('IP','21','usr','pwd'); ftp.binary(l_conn); ftp.get(l_conn, 'FILE_ORIGIN/file1.pdf' 'FILE_DESTINY' 'file2.pdf'); ftp.logout(l_conn); – Mariah

+0

如果第二个参数是该文件的留下作为具有UTL_FILE_DIR(/OracleXE/app/oracle/files/file.pdf)的路由路径完美的作品,但是当我改变FILE_ORIGIN不行,我究竟做错了什么? – Mariah

回答

0

从您参考,远程目录您上传的文件必须是一个Oracle目录中的文档。

  • 在远程数据库上创建目录
 
    SQL> CREATE OR REPLACE public DIRECTORY MY_DOCS as 'C:\FTP\files'; 
  • 那么只有你将能够使用它像预期一样:
 
    ftp.get(
     p_conn  => l_conn, 
     p_from_file => 'C:\oraclexe\app\oracle\files\file.pdf', 
     p_to_dir => 'MY_DOCS', 
     p_to_file => 'file.pdf');