通用 文件保存至数据库,从数据库写入磁盘 程序代码

通用 文件保存至数据库,从数据库写入磁盘 程序代码 ----20040809
这几天我休假中,正好有时间继续编写mycodelibrary  1.5版,今天晚上刚好写到文件与数据库存入取出模块,在论坛上此问题见的也较多,所以特此公开此部分代码,供有需者参考使用.代码虽然可以完整的正常使用,但还是需要做些错误方面的处理。

'欢迎你下载使用本代码,本份代码由程序太平洋提供下载学习之用
'声明:
'1.本站所有代码的版权归原作者所有,如果你使用了在本站下载的源代码
'  引起的一切纠纷(后果)与本站无关,请您尊重原作者的劳动成果!
'2.若本站在代码上有侵权之处请您与站长联系,站长会及时更正。
'中国代码网:http://www.daima.com.cn
'程序太平洋:http://www.5ivb.net
'email:dapha@etang.com
'copyright 2001-2005 by www.5ivb.net
'整理时间:2004-8-9 3:32:48
option explicit
public objconn as new adodb.connection
public m_connstring as string
private function exists(byval str_filename as string, _
            byval int_val as vbfileattribute) as boolean
    '--------------------------------------------------------------------------------
    ' project    :       mycodelibrary 1.5
    ' procedure  :       exists
    ' description:       [判断文件或目录是否存在]
    ' created by :       ronggang (zhouronggang@163.com)
    ' date-time  :       2004-8-9-2:31:45
    '
    ' parameters :       str_filename (string)
    '                    int_val (vbfileattribute)
    '--------------------------------------------------------------------------------
    on error resume next
    if len(str_filename) = 0 then
        exists = false
        exit function
    end if
    if int_val <> vbdirectory then                         '如果不是目录
        '如果为空表示文件不存在
        if dir(str_filename) = "" then
            exists = false
        else
            exists = true
        end if
    else
        if dir(str_filename, vbdirectory) = "" then
            exists = false
        else
            exists = true
        end if
    end if
end function
public sub binvalue(byval strfilename as string, byref objfield as field)
    '--------------------------------------------------------------------------------
    ' project    :       mycodelibrary 1.5
    ' procedure  :       binvalue
    ' description:       [将文件保存至数据库中]
    ' created by :       wangfeng
    ' date-time  :       2004-8-9-2:20:37
    '
    ' parameters :       strfilename (string)
    '                    objfield (field)
    '--------------------------------------------------------------------------------
    '此方法需要做错误处理,以防文件己打开
    dim objstream as stream
    if not exists(strfilename, vbnormal) then              '如果文件不存则抛出异常
        err.raise 50001, "dbfile", "文件不存在!"
        exit sub
    end if
    set objstream = new adodb.stream
    with objstream
        .type = adtypebinary
        .open
        .loadfromfile strfilename
        objfield.value = .read
    end with
    set objstream = nothing
end sub
public function binvalue2file(byval strfilename as string, byref objfield as field, optional overwrite as boolean = false) as boolean
    '--------------------------------------------------------------------------------
    ' project    :       mycodelibrary 1.5
    ' procedure  :       binvalue2file
    ' description:       [将数据库中的二进制数据保存为文件]
    ' created by :       wangfeng
    ' date-time  :       2004-8-9-2:22:33
    '
    ' parameters :       strfilename (string)           目标文件
    '                    objfield (field)               数据字段名
    '                    overwrite (boolean = false)    是否覆盖现有存在的文件
    '                                                   true 覆盖 false(默认)不存在时保存
    '--------------------------------------------------------------------------------
    on error goto errorhander
    dim objstream as stream
    dim returnmsg as vbmsgboxresult
    set objstream = new adodb.stream
    with objstream
        .type = adtypebinary
        .open
        .write objfield.value
        if overwrite then
            .savetofile strfilename, adsavecreateoverwrite
        else
            .savetofile strfilename, adsavecreatenotexist
        end if
    end with
    binvalue2file = true                                   '保存成功返回true
101:
    set objstream = nothing
    exit function
errorhander:
    binvalue2file = false
    goto 101
end function
public function getfilename(byval strpathfilename) as string
    dim ipos as long
    ipos = vba.instrrev(strpathfilename, "/")
    getfilename = mid(strpathfilename, ipos + 1)
end function
public function getpathname(optional strpathname as string) as string
    'sfilename = mid(getpathname, ipos + 1)
    dim ipos as long
    ipos = vba.instrrev(strpathname, "/")
    getpathname = mid(strpathname, 1, ipos)
end function

软件截图:

附完整源码:

点击浏览该文件

在使用过程中如有什么问题也可跟贴提出!谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在使用Spring Boot进行文件上传的项目中,将文件保存后的URL写入数据库的过程如下: 1. 创建一个包含文件上传功能的接口或控制器,用于接收文件上传请求。 2. 在接口或控制器中,通过MultipartFile参数获取上传的文件。 3. 创建一个唯一的文件名,可以使用UUID等方式生成,以避免文件名冲突。 4. 将文件保存到指定的目录中,可以使用File类的相关方法进行操作。 5. 构建文件保存后的URL,一般是基于项目的路径或域名加上文件保存的相对路径。例如,可以使用项目的域名+文件保存的相对路径来构建URL。 6. 将文件保存后的URL写入数据库,可以通过调用数据库操作的相关方法实现。例如,使用Spring Data JPA来操作数据库,通过创建实体类并调用save()方法将URL保存数据库中。 7. 返回上传结果给客户端,可以返回上传成功或失败的消息等。 总结:通过上述步骤,我们可以将文件保存后的URL写入数据库。这样,我们就能够在需要访问文件时,通过URL从数据库中获取文件的位置。这种方式可以实现文件的持久化保存,并且能够方便地管理文件。注意,对于大文件或者并发上传的情况,可能需要考虑文件存储和数据库访问的性能优化。 ### 回答2: 在使用Spring Boot进行文件上传的项目中,需要将文件保存后的URL写入数据库,可以按照以下步骤实现: 1. 首先,需要在Spring Boot项目中配置文件上传的功能。可以使用Spring Boot提供的MultipartFile类作为参数来接收文件,通过调用getOriginalFilename()方法获取文件名,然后将文件保存到指定位置。 2. 在数据库设计中,需要为保存文件URL的字段进行预留。可以选择将文件URL保存为字符串类型的字段,例如varchar或text类型。 3. 在文件上传的接口中,将文件保存后的URL获取到,并写入数据库。可以使用Spring Boot的自动注入功能,注入相关的数据访问对象(DAO),通过调用DAO的方法来操作数据库。 4. 在保存文件URL的方法中,需要注意以下几点: - 首先,需要生成一个唯一的文件名,避免文件名的冲突。可以使用UUID类生成一个唯一的标识。 - 然后,根据项目需求,构建一个完整的URL路径。可以包括项目的访问地址、文件保存的目录、生成的唯一文件名等信息。 - 最后,调用DAO的方法,将生成的URL保存数据库中,可以使用insert语句或其他相关方法。 5. 在保存文件URL的过程中,需要进行异常处理。例如,如果文件保存失败或数据库操作出现异常,需要进行适当的处理,并返回相应的错误信息。 6. 可以通过编写测试用例来验证文件上传和URL写入数据库的功能是否正常工作。使用JUnit或其他相关的测试框架,模拟文件上传的请求,验证文件是否保存成功,并且URL是否写入数据库。 通过上述步骤,可以实现将文件保存后的URL写入数据库的功能。这样,就可以在后续的操作中通过查询数据库获取文件URL,实现文件的下载或者其他相关功能。 ### 回答3: 在Spring Boot中实现文件上传功能时,可以将文件保存到服务器的指定目录中,并将保存后的文件URL写入数据库。 首先,需要在Spring Boot项目中配置文件上传的相关依赖。可以使用`spring-boot-starter-web`来启用Spring MVC的功能,以及`spring-boot-starter-data-jpa`来操作数据库。 接下来,在控制器中编写文件上传的方法。通过注解`@PostMapping`指定该方法处理POST请求,使用`@RequestParam("file") MultipartFile file`参数来接收上传的文件。然后,可以使用`file.getBytes()`将文件内容转换为字节数组,并将文件保存到服务器指定目录中。同时,生成一个唯一的文件名,以防止文件名冲突。可以使用`UUID.randomUUID().toString()`生成文件名,并使用`Files.write()`将文件写入服务器指定目录,例如: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("file") MultipartFile file) { try { byte[] bytes = file.getBytes(); String fileName = UUID.randomUUID().toString(); // 将文件保存到服务器指定目录 Path path = Paths.get("upload-dir/" + fileName); Files.write(path, bytes); // 将文件URL写入数据库 String fileUrl = "http://localhost:8080/files/" + fileName; // 在此处将fileUrl写入数据库的逻辑 return "File uploaded successfully!"; } catch (IOException e) { e.printStackTrace(); return "Failed to upload file!"; } } ``` 接着,需要为文件提供一个访问URL和资源路径。可以在Spring Boot项目中配置一个静态资源处理器,指定资源路径为保存文件的目录,例如: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/files/**") .addResourceLocations("file:upload-dir/"); } } ``` 在数据库中创建一个表,包含文件的唯一标识符和URL字段。在文件保存时,将文件URL写入数据库,可以使用JPA的相关操作实现。 这样,文件上传后的URL就会被保存数据库中,并可以通过访问相应的URL来获取上传的文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值