文件上传到数据库
1. 濡备綍涓娄紶鏂囦欢鍒扮绣绔欐暟鎹搴
涓嬮溃缁椤嚭涓涓灏嗘枃浠朵缭瀛桦埌鏁版嵁搴撶殑渚嫔瓙锛屼緵缃戝弸鍙傝冦
铡熺悊锛氩湪琛ㄤ腑寤虹珛涓涓瀛楁靛悕涓衡滈梼浠垛濓纴鏁版嵁绫诲瀷涓篛LE
瀵硅薄镄勫瓧娈碉纴铹跺悗鍒╃敤钖戝煎缓涓涓绐椾綋锛
1.璁剧疆闄勪欢鏂囨湰妗嗙殑濡备笅灞炴р沧带浠舵彁绀烘枃链钬濅负钬滃彸阌鍗曞嚮阃夋嫨鎻掑叆瀵硅薄钬濓纴濡备笅锲
2.阃変腑鐢辨枃浠跺垱寤猴纴鍐嶅崟鍑绘祻瑙堟寜阍锛岄夋嫨鏂囦欢钖庯纴鍐嶉変腑鏄剧ず涓哄浘镙囷纴濡备笅锲
3.鍗曞嚮纭瀹氭寜阍锛屽嵆鍙灏嗘枃浠朵缭瀛桦埌鏁版嵁搴扑腑锛屽弻鍑昏ュ浘镙囧嵆鍙镓揿紑鐩稿簲镄勬枃浠
首先导入了相应的jar包
<!--thymeleaf--><dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId></dependency><dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId></dependency><!--数据库连接--><dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId></dependency><!--mybatis整合springboot--><dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version></dependency><!--druid数据源--><dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version></dependency>
对数据源,mybatis,和上传文件进行配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource username: root password: shw123zxc url: jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver servlet:
multipart:
max-request-size: 10MB #上传文件的最大总大小
max-file-size: 10MB #上传单个文件的最大大小mybatis:
type-aliases-package: cn.codewei.pojo mapper-locations: classpath:/mapper/*.xml1234567891011121314
然后写一个文件上传的html,注意表单的==enctype属性要设置为multipart/form-data==
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title></head><body>
<h1>文件上传</h1>
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" name="file">
<input type="submit" value="上传">
</form></body></html>1234567891011121314
然后写一个Mapper和对应的Mapper.xml和service
@Mapper@Repositorypublic interface PhotoMapper {
// 向数据库中添加图片
public int addPhoto(Photo photo);
// 从数据库中取出图片
public Photo getPhotoById(@Param("id") int id);}123456789
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.codewei.mapper.PhotoMapper">
<insert id="addPhoto" parameterType="photo">
insert into image values (#{id},#{photo},#{photo_name},#{photo_type}) </insert>
<select id="getPhotoById" resultType="photo">
select * from image where id=#{id} </select></mapper>123456789101112
在Controller中进行调用
上传
@Autowiredprivate PhotoService photoService;@Autowiredprivate Photo photo;@PostMapping("/upload")@ResponseBodypublic String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
byte[] bytes = file.getBytes();
photo.setPhoto(bytes);
photo.setPhoto_name(file.getOriginalFilename());
photo.setPhoto_type(".jpg");
photoService.addPhoto(photo);
return "上传成功!";}123456789101112131415161718
取出,在页面中显示
@RequestMapping("/getPhoto")public String getImage(HttpServletResponse response) throws IOException {
Photo photo = photoService.getPhotoById(1);
byte[] photo1 = photo.getPhoto();
ServletOutputStream os = response.getOutputStream();
os.write(photo1);
os.close();
return "";}123456789
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title></head><body>
<h1>首页</h1>
<img src="/getPhoto" width="200px" height="200px"></body></html>
3. bak鏂囦欢镐庝箞瀵煎叆鏁版嵁搴
鍏埚缓绔嬩竴涓澶囦唤锛岀劧钖庡缓绔嫔囦唤鐢‵TP锛岃繖镙风┖闂存暟鎹搴挞噷浼氱敓鎴愪竴涓1.bak鏂囦欢鎴栬呮槸1.sql鏂囦欢銆傛墦寮FTP杞浠讹纴铹跺悗灏嗙数鑴戦噷镄1.sql鏂囦欢涓娄紶鍒拌繖鏁版嵁搴撶┖闂达纴浼氭彁绀鸿嗙洊锛岀偣鍑绘槸銆备紶瀹屼互钖庯纴镣逛竴涓嬩粠澶囦唤涓杩桦师灏卞彲浠ヤ简銆
镓揿紑bak鏂囦欢镄勬柟娉
棣栧厛锛屾垜浠镓惧埌bak鏂囦欢涔嫔悗锛屾垜浠鍏堟槑纭瀹冩槸灞炰簬鍝涓杞浠剁敓鎴愮殑鏂囦欢锛屾瘆濡傛槸cad鐢熸垚镄.bak鏂囦欢锛岄偅涔堟垜浠灏变娇鐢╟ad杞浠舵潵镓揿紑瀹冿纴濡傛灉鏄痺ord鐢熸垚镄勶纴灏辩敤office𨱒ユ墦寮鍗冲彲銆
鐜板湪鎴戜滑灏嗘枃浠剁殑𨰾揿𪾢钖嶈繘琛岀紪杈戞樉绀恒傚湪璧勬簮绠$悊鍏朵腑杩涜岃剧疆瀹屾垚銆
鐜板湪锛屾湁cad杞浠剁敓鎴愮殑bak鏂囦欢鎴戜滑灏嗗叾𨰾揿𪾢钖嶅懡钖崭负钬.dwg钬濆嵆鍙瀹屾垚镓揿紑浜 銆
鏄灞炰簬office杞浠朵骇鐢熺殑bak鏂囦欢镄勮瘽锛屽氨浣跨敤鐩稿簲镄勬搷浣滃皢bak鏂囦欢镄勫悗缂钖嶆敼涓哄瑰簲镄勬牸寮忓氨琛屼简锛屾瘆濡倃ord镄勬敼涓篸oc锛孭owerPoint镄勬敼涓簆pt绛夌瓑銆
铹跺悗浣跨敤office杞浠跺皢鍏舵墦寮鍗冲彲銆
鍏朵粬杞浠跺瑰簲鐢熸垚镄刡ak鏂囦欢锛屽氨鏄鐢ㄧ浉搴旂殑鏂规硶灏嗗叾镙煎纺镟存敼涔嫔悗锛屽畬鎴愭墦寮灏辫屼简銆
姣斿伥xt瀵瑰簲镄刡ak鏂囦欢銆
4. 如何上传文件到数据库
文件上传到数据库请参考以下示例:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.sql.*" %>
<%/////连接数据库
java.sql.Connection conn;
java.sql.Statement stmt;
java.sql.ResultSet rs1;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:dababasename");///数据源
stmt=conn.createStatement();
%>
<%
String sqlin="insert into drawing values ;
File file = new File("c:/z.jpg");
long l1=file.length();
int l2=(int)l1;
FileInputStream is = new FileInputStream(file);
InputStream fis=(InputStream)is;
PreparedStatement ps = conn.prepareStatement("insert into images values (?,?)");
ps.setString(1,file.getName());
ps.setBinaryStream(2,fis,file.length());
ps.executeUpdate();
ps.close();
fis.close();
//将图片从数据库中提取,进行显示
//drawing字段为IMAGE类型
stmt = conn.createStatement();
rs1 = stmt.executeQuery("SELECT * FROM drawing WHERE drawing_code ='0-515' and version=3");
if (rs1.next())
{
String dim_image = rs1.getString("file_name");
byte [] blocco = rs1.getBytes("drawing");
response.setContentType("image/jpeg");
ServletOutputStream op = response.getOutputStream();
for(int i=0;i<blocco.length;i++)
{
op.write(blocco[i]);
}
}
rs1.close();
%>
5. 怎样用php实现上传图片到数据库
php实现上传图片保存到数据库的方法。具体分析如下:
php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)
如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。
首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。
mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。
BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
数据表photo,用于保存图片数据,结构如下:
CREATETABLE`photo`(
`id`int(10)unsignedNOTNULLauto_increment,
`type`varchar(100)NOTNULL,
`binarydata`mediumblobNOTNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1AUTO_INCREMENT=1;
upload_image_todb.php代码如下:
<?php
//连接数据库
$conn=@mysql_connect("localhost","root","")ordie(mysql_error());
@mysql_select_db('demo',$conn)ordie(mysql_error());//判断action
$action=isset($_REQUEST['action'])?$_REQUEST['action']:'';
//上传图片
if($action=='add'){
$image=mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));
$type=$_FILES['photo']['type'];
$sqlstr="insertintophoto(type,binarydata)values('".$type."','".$image."')";
@mysql_query($sqlstr)ordie(mysql_error());
header('location:upload_image_todb.php');
exit();
//显示图片
}elseif($action=='show'){
$id=isset($_GET['id'])?intval($_GET['id']):0;
$sqlstr="select*fromphotowhereid=$id";
$query=mysql_query($sqlstr)ordie(mysql_error());
$thread=mysql_fetch_assoc($query);
if($thread){
header('content-type:'.$thread['type']);
echo$thread['binarydata'];
exit();
}
}else{
//显示图片列表及上传表单
?>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
<title>uploadimagetodbdemo</title>
</head>
<body>
<formname="form1"method="post"action="upload_image_todb.php"enctype="multipart/form-data">
<p>图片:<inputtype="file"name="photo"></p>
<p><inputtype="hidden"name="action"value="add"><inputtype="submit"name="b1"value="提交"></p>
</form>
<?php
$sqlstr="select*fromphotoorderbyiddesc";
$query=mysql_query($sqlstr)ordie(mysql_error());
$result=array();
while($thread=mysql_fetch_assoc($query)){
$result[]=$thread;
}
foreach($resultas$val){
echo'<p><img
src="upload_image_todb.php?action=show&id='.$val['id'].'&t='.time().'"
width="150"></p>';
}
?>
</body>
</html>
<?php
}
?>
程序运行截图和数据库截图:
6. 在Yii中怎样把excel表格上传到数据库中
1.网站中商品一多,肯定需要一键导入功能,有现在成的第三方插件类PHPExcel,可以直接网络搜索进行下载。
7. 如何把excel表格数据导入到数据库
1、打开SQL Server 2014 Management Studio 数据库,并且登录进去;
8. 怎样将.sql文件导入到数据库
方法一:
1、生成脚本导出导入sql2008全部数据,右键要导出的数据库,任务--生成脚本。