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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 754|回复: 6

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

[复制链接]

197

主题

1307

帖子

3568

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3568
发表于 2018-7-28 16:19:08 | 显示全部楼层 |阅读模式
度量快速开发平台中,可以设置图片字段,为了保证效率,我们可以把图片存放到服务器上的一个文件夹中,平台中只保存一个图片的指针。
实际业务如下:比如平台中的签名图片,每个人可以自己设置,也可以管理人员预先制作好单位所有的签名图片,如果是管理员预先制作好单位所有图片,在每一个人签名中,一个一个去上传维护,那就比较麻烦。如何能批量的把图片拷贝到服务器上,然后以一定规则批量执行以下,系统中就保存好图片的指针呢?

我们可以借助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\照片');

回复

使用道具 举报

197

主题

1307

帖子

3568

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3568
 楼主| 发表于 2018-7-28 16:20:00 | 显示全部楼层
这个方式在实际的单位中也是运用了。效果很不错。节省大量时间。
回复 支持 反对

使用道具 举报

197

主题

1307

帖子

3568

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3568
 楼主| 发表于 2018-7-28 16:21:15 | 显示全部楼层
大家有兴趣,可以业余时间多深入了解学习oracle的java相关功能,把oracle掌握熟悉,对使用度量快速开发平台能事半功倍的效果。
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8565

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8565
QQ
发表于 2018-7-28 18:18:19 | 显示全部楼层
有一个高大上的功能!
回复 支持 反对

使用道具 举报

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
发表于 2018-7-28 20:19:12 | 显示全部楼层
也,整得不错。
回复 支持 反对

使用道具 举报

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
发表于 2018-7-28 09:03:00 | 显示全部楼层
希望大家通过平台外多多发现更优的方式共享给大家。
回复 支持 反对

使用道具 举报

542

主题

5919

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
发表于 2018-7-28 12:08:24 | 显示全部楼层

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-12-13 00:33 , Processed in 0.374403 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表