mysql 上传文件_上传文件到Mysql数据库

CREATE TABLE `image` (

`Id` int(11) NOT NULL auto_increment,

`Image` blob,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

Second,you need a jsp. Below is the HTML block in jsp file:

Third, you need a servlet to deal with the file upload. Below is the configuration in web.xml and code:

TestUploadImageToDB

com.TestUploadImageToDB

TestUploadImageToDB

/TestUploadImageToDB

public class TestUploadImageToDB extends HttpServlet {

private static final long serialVersionUID = 6397853149875034008L;

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if (isMultipart) {

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(1024*1024);

factory.setRepository(new File("c:\\temp"));

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(100 * 1024 * 1024);

List items = new ArrayList();

try {

items = upload.parseRequest(request);

} catch (FileUploadException e) {

e.printStackTrace();

}

Iterator iter = items.iterator();

while (iter.hasNext()) {

FileItem item = (FileItem) iter.next();

if (item.isFormField()) {

String name = item.getFieldName();

String value = item.getString();

System.out.println(name + ":" + value);

} else {

writeToDB(item.getInputStream());

}

}

}

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("success!");

out.flush();

out.close();

}

public void writeToDB(InputStream ism){

Connection con = null;

try {

Class.forName("com.mysql.jdbc.Driver").newInstance();

String URL = "jdbc:mysql://localhost:3306/test?user=root&password=root";

con = DriverManager.getConnection(URL);

PreparedStatement st = null;

InputStream in = new BufferedInputStream(ism);

String sql = "insert into image(Image) values(?)";

st = con.prepareStatement(sql);

st.setBinaryStream(1, in);

int i = st.executeUpdate();

System.out.println("==>" + i);

in.close();

}catch(Exception e){

e.printStackTrace();

} finally {

try {

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-11-20 17:34

浏览 1300

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将文件上传MySQL数据库,需要先将文件转换成二进制数据,然后将其插入到数据库中的BLOB类型字段中。以下是使用Layui上传图片并将其存入MySQL数据库的示例: 1. 在HTML中添加文件上传表单: ```html <form class="layui-form" action="" enctype="multipart/form-data"> <div class="layui-form-item"> <div class="layui-upload"> <button type="button" class="layui-btn" id="uploadBtn">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="previewImg"> <p id="previewText"></p> </div> </div> </div> </form> ``` 2. 引入Layui和jQuery库: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css"> <script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script> ``` 3. 初始化Layui上传组件: ```javascript layui.use('upload', function(){ var upload = layui.upload; //执行上传 var uploadInst = upload.render({ elem: '#uploadBtn', //绑定元素 url: '/upload/', //上传接口 accept: 'images', //允许上传的文件类型 size: 1024, //限制文件大小,单位KB done: function(res){ //上传成功回调 $('#previewImg').attr('src', res.data.src); //显示预览图 $('#previewText').html(res.data.title); //显示文件名 //将文件二进制数据存入数据库 $.ajax({ type: 'POST', url: '/saveToDB/', data: { imageData: res.data.imageData //文件的二进制数据 }, success: function(data){ console.log(data); }, error: function(){ console.log('上传失败'); } }); }, error: function(){ //上传失败回调 console.log('上传失败'); } }); }); ``` 4. 在服务器端处理上传的文件,并将其存入MySQL数据库: ```php <?php //获取上传的文件二进制数据 $imageData = file_get_contents($_FILES['file']['tmp_name']); //连接MySQL数据库 $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "dbname"; $conn = new mysqli($servername, $username, $password, $dbname); //将文件二进制数据插入到数据库中 $stmt = $conn->prepare("INSERT INTO images (image_data) VALUES (?)"); $stmt->bind_param("b", $imageData); $stmt->execute(); $stmt->close(); $conn->close(); ?> ``` 注意:以上代码仅供参考,具体实现需要根据自己的实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值