selectedI-6ren">
gpt4 book ai didi

Android 应用程序使用 Smack 和 Openfire 4.1.4 发送图像时出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:09 25 4
gpt4 key购买 nike

我正在使用带有 Openfire 4.1.4 的 XMPP 开发聊天应用程序,一对一的文本聊天工作正常,但是当我发送图像时出现错误

这是我的文件发送代码:

Log.e("ad",">selectedImagePath====="+selectedImagePath);
FileTransferManager manager = FileTransferManager.getInstanceFor(Config.conn1);
OutgoingFileTransfer transfer;
transfer = manager.createOutgoingFileTransfer(userJid+"/"+Config.conn1); //JID - user@host/resource
File file = new File(selectedImagePath);
try {
transfer.sendFile(file, "image message test");
} catch (Exception e) {
e.printStackTrace();
}
while (!transfer.isDone()) {
if (transfer.getStatus().equals(AMPExtension.Status.error)) {
Log.e("ad","ERROR!!! " + transfer.getError());
} else if (transfer.getStatus().equals(FileTransfer.Status.cancelled)
|| transfer.getStatus().equals(FileTransfer.Status.refused)) {
Log.e("ad","Cancelled!!! " + transfer.getError());
}
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (transfer.getStatus().equals(FileTransfer.Status.refused) ) {
Log.e("ad","refused cancelled error" + transfer.getError());
}
else if (transfer.getStatus().equals(FileTransfer.Status.error))
{
Log.e("ad","error="+ transfer.getError());
}
else if (transfer.getStatus().equals(FileTransfer.Status.cancelled))
{
Log.e("ad","cancelled");
}
else {
Log.e("ad","Success");
}

这是我的日志:

  02-23 14:56:32.489 14951-14951/com.app.chatv1 E/ad: >selectedImagePath=====/storage/emulated/0/Pictures/1519194363122.jpg
02-23 14:56:33.490 14951-14951/com.app.chatv1 E/ad: error=null

我还有另一个相关问题:当​​我成功将图像发送到服务器时,它将放置在服务器位置?

最佳答案

   FileTransferManager ftm1 =FileTransferManager.getInstanceFor(connection);
FileTransferManager ftm2=FileTransferManager.getInstanceFor(connection2);

ftm2.addFileTransferListener(new FileTransferListener() {
@Override
public void fileTransferRequest(FileTransferRequest request) {
IncomingFileTransfer ift = request.accept();
try {
InputStream is = ift.recieveFile();
ByteArrayOutputStream os = new ByteArrayOutputStream();
int nRead;
byte[] buf = new byte[1024];
while ((nRead = is.read(buf, 0, buf.length)) != -1) {
os.write(buf, 0, nRead);
}
os.flush();
dataReceived = os.toByteArray();
} catch (SmackException | IOException | XMPPErrorException e) {
e.printStackTrace();
}
if (Arrays.equals(dataToSend, dataReceived)) {
System.out.println("Received data matches send data. \\o/");
} else {
System.err.println("Recieved data DOES NOT match send data. :(");
}
}
});

OutgoingFileTransfer oft = ftm1.createOutgoingFileTransfer(XmppStringUtils.completeJidFrom(USER, SERV, "resourse"));
oft.sendStream(new ByteArrayInputStream(dataToSend), "hello.txt", dataToSend.length, "A greeting");
outerloop: while (!oft.isDone()) {
switch (oft.getStatus()) {
case error:
System.out.println("Filetransfer error: " + oft.getError());
break outerloop;
default:
System.out.println("Filetransfer status: " + oft.getStatus() + ". Progress: " + oft.getProgress());
break;
}
Thread.sleep(1000);
}

connection.disconnect();
connection2.disconnect();
Thread.sleep(1000);
}

一个连接正在发送文件,另一个连接正在接收这是工作代码。

关于Android 应用程序使用 Smack 和 Openfire 4.1.4 发送图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com