关于mySQL存储文本和图片的方法

本文为大家分享一篇关于MySQL存储文本和图片的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随微点阅读小编来看看吧

Oracle中大文本数据类型

1

2

Clob  长文本类型  (MySQL中不支持,使用的是text)

Blob  二进制类型

MySQL数据库

1

2

3

4

5

6

Text   长文本类型

  TINYTEXT:   256 bytes

  TEXT:     65,535 bytes    => ~64kb

  MEDIUMTEXT:  16,777,215 bytes  => ~16MB

  LONGTEXT:   4,294,967,295 bytes => ~4GB

Blob  二进制类型

例如:

建表

1

2

3

4

5

CREATE TABLE test(

   id INT PRIMARY KEY AUTO_INCREMENT,

   content LONGTEXT, -- 文本字段

   img LONGBLOB  -- 图片字段

);

存储文本时是以字符类型存储,存储图片时是以二进制类型存储,具体使用的设置参数方法,和获取数据方法不同。

例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

// 存储文本时

// 存储时,设置参数为字符流 FileReader reader

pstmt.setCharacterStream(1, reader);

// 获取参数时

// 方式1:

Reader r = rs.getCharacterStream("content");

// 获取长文本数据, 方式2:

System.out.print(rs.getString("content"));

// 存储二进制图片时

// 设置参数为2进制流 InputStream in

pstmt.setBinaryStream(1, in);

// 获取2进制流

InputStream in = rs.getAsciiStream("img");

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

/**

 * 保存照片

 *

 */

@Test

public void test2(){

  String sql = "insert into test(img) values(?)";

  try{

    con = JDBCUtil.getConnection();

    pstmt = con.prepareStatement(sql);

    // 设置参数

    // 获取文本

    File file = new File("f:/a.jpg");

    InputStream in = new FileInputStream(file);

    // 设置参数为2进制流

    pstmt.setBinaryStream(1, in);

    // 执行sql

    pstmt.executeUpdate();

    in.close();

  }catch (Exception e) {

    e.printStackTrace();

  }finally{

    try {

      JDBCUtil.close(con, pstmt);

    } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

  }

}

/**

 * 获取照片

 *

 */

@Test

public void test3(){

  String sql = "select * from test where id=?;";

  try{

    con = JDBCUtil.getConnection();

    pstmt = con.prepareStatement(sql);

    // 设置参数

    pstmt.setInt(1, 2);

    // 执行查询

    rs = pstmt.executeQuery();

    while(rs.next()){

      byte[] buff = new byte[1024];

      InputStream in = rs.getAsciiStream("img");

      int l=0;

      OutputStream out = new FileOutputStream(new File("f:/1.jpg"));

      while((l=in.read(buff))!=-1){

        out.write(buff, 0, l);

      }

      in.close();

      out.close();

    }

  }catch (Exception e) {

    e.printStackTrace();

  }finally{

    try {

      JDBCUtil.close(con, pstmt);

    } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

  }

}

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值!

转自:微点阅读   https://www.weidianyuedu.com

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Django的模型来定义一个包含图片和文字的数据表,然后将图片和文字分别存储在该数据表的相应字段中。具体实现可以参考以下代码: ```python from django.db import models class ImageText(models.Model): image = models.ImageField(upload_to='images/') text = models.TextField() def __str__(self): return self.text ``` 其中,`ImageField`是Django提供的用于存储图片字段类型,`upload_to`参数指定了图片存储的路径。`TextField`则是用于存储文字的字段类型。 在视图函数中,可以通过`request.FILES`获取上传的图片文件,然后将其保存到指定路径,并将图片路径和文字一起保存到数据库中。具体实现可以参考以下代码: ```python from django.shortcuts import render from .models import ImageText def upload(request): if request.method == 'POST': image = request.FILES['image'] text = request.POST['text'] img_text = ImageText(image=image, text=text) img_text.save() return render(request, 'upload.html', {'success': True}) return render(request, 'upload.html') ``` 在模板中,可以使用`<input type="file">`标签来实现图片上传功能。具体实现可以参考以下代码: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="image"> <textarea name="text"></textarea> <button type="submit">上传</button> </form> ``` 以上就是将图片和文字存入MySQL数据库的基本实现方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值