上传文件到数据库和服务器

上传文件我们需要做三步。

①在页面中能选择文件上传;

②能够将二进制数据转为byte数组,然后存入数据库中,注意数据库字段的类型;

③将文件保存到服务器。

	@RequestMapping(value = "/upload")
	public void upload(UpLoadFile uploadFile) throws Exception {
		String msg = "上传成功!";
		String originalFilename = uploadFile.getFile().getOriginalFilename();
		long size = uploadFile.getFile().getSize();
		String contentType = uploadFile.getFile().getContentType();
		String uploadRoot = "xxx";// 服务器根路径
		String folder = "";
		folder = uploadRoot + folder;
		folder = StringUtils.replace(folder, "\\", "/");
		File dir = new File(folder);
		if (!dir.exists()) {
			if (!dir.mkdirs()) {
				throw new Exception("creating directory failed!");
			}
		}
		folder += "/" + "上传的文件名";
		File outFile = new File(folder);

		byte[] appwar = uploadFile.getFile().getBytes();// 文件转byte 字节类型
		// me.setAppwar(appwar);//MySQL数据库中用longblob类型来存储,最大单个存储文件为4G
		// this.mobileverDao.insert(me);
		try {
			uploadFile.getFile().transferTo(outFile);// 文件上传到服务器的地址
			//使用transferTo(dest)方法将上传文件写到服务器上指定的文件。
		} catch (IllegalStateException e) {
			throw new Exception("upload file is error!\n" + e.getMessage());
		}
		 //上传成功
	}

文件已字节形式存储到数据库中。

MySQL数据库中BLOB类型分为以下四种

  • TINYBLOB可变长二进制数据,最多255个字节
  • BLOB可变长二进制数据,最多2的16次方-1个字节 即64K
  • MEDIUMBLOB可变长二进制数据,最多2的24次方-1个字节 即16M
  • LONGBLOB可变长二进制数据,最多2的32次方-1个字节 即4G
  • 这几个类型之间的唯一区别是在存储文件的最大大小不同。
Oralce数据库中大数据类型分为BLOB和BFILE 两种,其中BLOB分为以下三种
BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节CLOB CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节NCLOB 基于国家语言字符集的NCLOB数据类型用于存储数据库中的固定宽度单字节或多字节字符的大型数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节
BFILE 当大型二进制对象的大小大与4G字节时,BFILE数据类型用于将其存储在数据库外的操作系统文件中;当其大小不足4G字节时,则将其存储在数据库内部的操作系统文件中,BFILE列存储文件定位程序,此定位程序指向服务器上的大型二进制文件。
时间: 2024-10-01 22:23:10

上传文件到数据库和服务器的相关文章

上传文件至数据库并下载

在FineReport中,会出现希望直接将txt.excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况. 上传:使用文件控件上传文件,以二进制流保存至数据库字段中(字段类型必须是用于保存二进制数据的): 下载:直接将二进制数据拖入单元格,设置单元格的其他属性>用下载链接显示二进制内容,就可以下载文件. 下面通过上传一个txt文件至sql server数据库中并下载为例来说明实现过程.Sqlite数据库仅支持上传,不支持下载的. 前提准备 准

网络编程之使用HttpClient上传文件的客户端和服务器

1.1客户端: HttpClient常用HttpGet和HttpPost这两个类,分别对应Get方式和Post方式. 无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源. 1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象. 2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象. 3.通过HttpResp

springMVC+spring+hibernate注解上传文件到数据库,下载,多文件上传

数据库 CREATE TABLE `annex` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `realName` varchar(36) DEFAULT NULL, `fileContent` mediumblob, `handId` bigint(20) DEFAULT NULL, `customerId` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_id` (`handId`), CON

AFNetworking框架_上传文件或图片到服务器

文中的 XXXXXXXXXX更具你自己的参数填写 - (void)uploadImageWithImage:(NSString *)imagePath { //上传其他所需参数 NSString *userId=XXXXXXXXXXX; NSString *token=XXXXXXXXXXX; //上传请求POST AFHTTPClient *client=[AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@""]]; NSStr

ntko的office控件,ssm框架下上传文件到数据库和页面的回显

在这里用到了对文件流进行的操作,废话不多说,先贴代码出来 首先是文件上传到数据库,这里用到了SqlServer数据库,数据库对应数据类型是image,而JAVA实体则对应的是Byte[](比特数组). 首先跟正常上传文件一样,页面上写一个form表单 <form method="post" enctype="multipart/form-data" name="frmWordDoc"> <input type="fil

scp 上传文件到多个服务器节点

参考:scp批量上传文件到多台机器上(升级版) 实测,代码可运行. 1.如果遇到syntax error near unexpected token问题,基本是由于windows环境下编写的shell脚本上传到UNIX中包含了^M引起的. 使用remove_ctrlM.sh替换掉sh脚本中的^M字符,也可以使用 vi -b your_file编辑文件. 如果scp.conf报syntax error near unexpected token问题,则vi -b scp.conf编辑此配置文件,替

ASP.NET跨服务器上传文件的相关解决方案

第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ Page Language="C#" EnableViewState="false"%> <%@ Import Namespace="System.Net" %><%@ Import Namespace="Syste

web服务器上传文件过程

通过web服务器上传文件,需要提前准备好下面3步,然后才能通过第4步上传文件1.web服务器的配置 1.1 将代码src目录中的select.c文件的170行的REQUEST_TIMEOUT改为10*REQUEST_TIMEOUT 1.2 在buildroot中选中boa后保存编译,然后更新nfs_root中内容: 1.3 重启单板 1.4 配置/etc/boa/boa.conf文件 1.4.1 屏蔽掉Group nobody,增加Group 0 1.4.2 去掉Errorlog前的屏蔽 1.4

PHP使用FTP上传文件到服务器(实战篇)

我们在做开发的过程中,上传文件肯定是避免不了的,平常我们的程序和上传的文件都在一个服务器上,我们也可以使用第三方sdk上传文件,但是文件在第三方服务器上.现在我们使用PHP的ftp功能把文件上传到我们自己的服务器,我使用的linux的服务器,首先确保服务器上配置好ftp,以vsftpd为例. FTP类,此类包含把文件上传.下载.删除和删除ftp服务器目录功能,php版本>=7.0 <?php /** * Created by PhpStorm. * User: 123456 * Date: 2