1
我一直在嘗試創建一個運行Java中的客戶端和Python中的服務器的程序。 我的總體目標是在Java上將客戶端上的圖片上傳到服務器上,並將其存儲在mysql服務器上。我還沒有嘗試過從Python上的圖像轉換爲在mysql上的blob,並已上傳到python階段。這是下面的代碼:從java上的客戶端發送圖像到python上的服務器
客戶:(JAVA)
client.send("upload##user##pass##"); //this is how i know that upload request has been sent.
String directory = "/home/michael/Pictures/"+field.getText();// a valid directory of a picture.
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(new File(directory));
} catch (IOException err) {
err.printStackTrace();
}
try {
ImageIO.write(bufferedImage, "png", client.socket.getOutputStream());//sending the picture via socket.
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
這是服務器:(Python)的
elif mar[0]=="upload":##this is how i know that the request is to upload
buf = ''
while len(buf)<4:
buf += clientsock.recv(4-len(buf))
size = struct.unpack('!i', buf)
print "receiving %s bytes" % size
with open('tst.jpg', 'wb') as img:
while True:
data = clientsock.recv(1024)
if not data:
break
img.write(data)
print 'received, yay!'
這段代碼實際上不起作用,打印量可笑我想發送的字節(大約2 GB的圖片)我沒有和服務器/客戶端一起工作過很多,所以這段代碼可能很糟糕。
首先,感謝您的評論。 然而,它運行這個錯誤: 類型不匹配:不能從java.io.OutputStream中轉換爲org.omg.CORBA.portable.OutputStream中 這兩種類型似乎不是在第一行某種原因相同。 – Michael
嘗試導入java.io.OutputStream而不是org.omg.CORBA.portable.OutputStream – Delimitry
它的工作原理。我愛你。 – Michael