度量快速开发平台-专业、快速的软件定制快开平台

标题: 利用oracle写JAVA包获取操作系统目录的内容来实现批量插入图片给到快速开发平台系统中 [打印本页]

作者: 张军勇    时间: 2020-7-28 09:03
希望大家通过平台外多多发现更优的方式共享给大家。
作者: 张兴康    时间: 2020-7-28 12:08


作者: 王爱东    时间: 2020-7-28 16:19
标题: 利用oracle写JAVA包获取操作系统目录的内容来实现批量插入图片给到快速开发平台系统中
度量快速开发平台中,可以设置图片字段,为了保证效率,我们可以把图片存放到服务器上的一个文件夹中,平台中只保存一个图片的指针。
实际业务如下:比如平台中的签名图片,每个人可以自己设置,也可以管理人员预先制作好单位所有的签名图片,如果是管理员预先制作好单位所有图片,在每一个人签名中,一个一个去上传维护,那就比较麻烦。如何能批量的把图片拷贝到服务器上,然后以一定规则批量执行以下,系统中就保存好图片的指针呢?

我们可以借助oracle中的java包,来实现读取操作系统目录下的文件,然后按照一定规则插入到oracle指定业务的表中来实现。
实现代码示例:

--创建表保存文件列表信息。
Create Table dirlist(
     filename varchar2(4000),
     filesize number,
     filedate date) ;

--此过程用户访问操作系统目录并读取文件列表.
create or replace and compile java sourcenamed DirList as
import java.io.*;
import java.sql.*;
public class DirList
{
   public static void getList(String directory)throws SQLException
   {
    File path=new File(directory);
    String[] fileList=path.list();
    String fileName;
    long fileSize;
    long fileDate;
    for (int i=0;i<fileList.length; i++)
    {
      fileName=fileList;
      File fpath=newFile(directory+'/'+fileName);
      fileSize=fpath.length();
      fileDate=fpath.lastModified();
      #sql{insert into delit.dirlist(filename,filesize, filedate)
     values(:fileName,:fileSize,to_date('01/01/1970','mm/dd/yyyy')+:fileDate/(24*60*60*1000))};
    }
   }
}

--此过程用于调用和执行JAVA存储过程(DirList)
CREATE OR REPLACE PROCEDUREdelit.p_get_dir_list(i_directory IN VARCHAR2) AS
   LANGUAGE JAVA NAME'DirList.getList(java.lang.String)';

如果执行有错误:
  --执行p_get_dir_list过程获取数据
  --ORA-29532: Java 调用被未捕获的 Java 异常错误终止:java.security.AccessControlException: the Permission
  Execdelit.p_get_dir_list('D:/OA/Server/FileSystem/DocumentImages/照片');
--用SYS执行:
execdbms_java.grant_permission( 'DELIT', 'SYS:java.io.FilePermission','D:\OA\Server\FileSystem\DocumentImages\照片', 'read' );
execdbms_java.grant_permission( 'DELIT', 'SYS:java.io.FilePermission','D:\OA\Server\FileSystem\DocumentImages\照片\*', 'read,write' );


---正式执行。

Execdelit.p_get_dir_list('D:\OA\Server\FileSystem\DocumentImages\照片');


作者: 王爱东    时间: 2020-7-28 16:20
这个方式在实际的单位中也是运用了。效果很不错。节省大量时间。
作者: 王爱东    时间: 2020-7-28 16:21
大家有兴趣,可以业余时间多深入了解学习oracle的java相关功能,把oracle掌握熟悉,对使用度量快速开发平台能事半功倍的效果。
作者: 陈晓龙    时间: 2020-7-28 18:18
有一个高大上的功能!
作者: 张军勇    时间: 2020-7-28 20:19
也,整得不错。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2