我一直在使用python上的服务器和java上的客户端。我已经从java中的客户端向python中的服务器发送了一张图片,并将其编码为base64并将其以blob格式保存在sql表中。我的问题是:如何从java获取整个代码?我目前做的不起作用。
这是我在python中保存图片的方式:
with open("test.png", "rb") as f:
data1 = f.read()
data1.encode("base64")
name1="Michael"# this is the user
with con:
cur = con.cursor()
cur.execute("INSERT INTO Pictures VALUES (%s, %s )",(name1, data1))
这是我发送图片的方式:
cur.execute("SELECT Pictures FROM Pictures where Users=%s",(name))#this is getting the encoded info
rows=cur.fetchall()
row_exist = int(cur.rowcount)
if row_exist!=0:
for row in rows:
img=row["Pictures"]
img.decode('base64')
clientsock.send("About to send image\n")
clientsock.sendall(img)
clientsock.send("Something\n")
客户端中的代码:(java):
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
FileOutputStream writer= new FileOutputStream("/home/michael/Pictures/Somepic.png");
while ((servMes=in.readLine())!=null)
{
if (servMes.equals("About to send image"))
{
System.out.println("entered");
}}
我应该用Java写什么以便发送图片?我不确定如何为base64类型的信息提供适当的缓冲区。我已经尝试使用字符串“Something”来解决问题,但我不能。
我知道我之前发过类似的问题,但我从来没有得到正确的答案。 (如果您还可以在Java中添加转换为图像文件,我将非常感激)