Java将从数据库中查出的longblob类型的图片设置成 http://..........jpg的形式,并使用return的方式传给微信小程序,微信小程序用wx.request的方式接收,并用<image>渲染到页面上,完整的代码
时间: 2024-06-08 22:11:49 浏览: 153
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
5星 · 资源好评率100%
Java代码:
```
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Base64;
public class ImageConverter {
public static String convertImageToUrl(String id) {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
String imageUrl = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
statement = connection.prepareStatement("SELECT image FROM images WHERE id = ?");
statement.setString(1, id);
resultSet = statement.executeQuery();
if (resultSet.next()) {
Blob blob = resultSet.getBlob("image");
byte[] imageBytes = blob.getBytes(1, (int) blob.length());
String base64EncodedImage = Base64.getEncoder().encodeToString(imageBytes);
imageUrl = "http://localhost:8080/image/" + id + ".jpg";
URL url = new URL(imageUrl);
url.openConnection().setDoOutput(true);
url.openConnection().setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
url.openConnection().getOutputStream().write(("image=" + base64EncodedImage).getBytes());
}
} catch (ClassNotFoundException | SQLException | MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return imageUrl;
}
}
```
这是一个将数据库中的图片转换为URL的工具类。我们假设数据库中存储的图片都是longblob类型的,且列名为“image”。将其转换为URL时,我们使用了Base64编码,并将其作为参数“image”传递给了一个Servlet,该Servlet会将其转换为jpg格式的图片并存储到服务器上。
Servlet代码:
```
import java.io.IOException;
import java.util.Base64;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/image/*")
public class ImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] parts = request.getRequestURI().split("/");
String id = parts[parts.length - 1].split("\\.")[0];
byte[] imageBytes = Base64.getDecoder().decode(request.getParameter("image"));
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
}
}
```
这是一个将Base64编码的图片转换为jpg格式的Servlet。我们将其映射到“/image/*”路径上,并且将其作为URL的一部分,在Java代码中进行访问。返回的结果会在微信小程序中用<image>标签渲染。
小程序代码:
```
<image src="{{imageUrl}}"></image>
```
这是一个简单的<image>标签,我们将其绑定到一个名为“imageUrl”的变量上。在微信小程序中,我们使用wx.request发起GET请求,该请求将会返回一个图片URL,将其赋值给“imageUrl”变量即可。
微信小程序代码:
```
Page({
data: {
imageUrl: ''
},
onLoad: function () {
var that = this;
wx.request({
url: 'http://localhost:8080/image/1.jpg',
success: function (res) {
that.setData({
imageUrl: res.data
});
}
});
}
});
```
这是一个简单的页面加载函数,其中我们使用了wx.request发起了一个GET请求。在请求成功后,将返回的结果赋值给“imageUrl”变量即可。
阅读全文