修复windows下无法发送中文名文件的问题
This commit is contained in:
parent
bf8e6bddb9
commit
bf4a7eea7d
@ -33,6 +33,10 @@
|
|||||||
#include "user_info.h"
|
#include "user_info.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define URL_SIZE 20
|
#define URL_SIZE 20
|
||||||
#define BASE_URL "tcp://0.0.0.0"
|
#define BASE_URL "tcp://0.0.0.0"
|
||||||
#define G_BUF_SIZE (16 * 1024 * 1024)
|
#define G_BUF_SIZE (16 * 1024 * 1024)
|
||||||
@ -252,12 +256,35 @@ bool func_send_img(char *path, char *receiver, uint8_t *out, size_t *len)
|
|||||||
if ((path == NULL) || (receiver == NULL)) {
|
if ((path == NULL) || (receiver == NULL)) {
|
||||||
LOG_ERROR("Empty path or receiver.");
|
LOG_ERROR("Empty path or receiver.");
|
||||||
rsp.msg.status = -1;
|
rsp.msg.status = -1;
|
||||||
} else if (!fs::exists(path)) {
|
|
||||||
LOG_ERROR("Path does not exists: {}", path);
|
|
||||||
rsp.msg.status = -2;
|
|
||||||
} else {
|
} else {
|
||||||
SendImageMessage(receiver, path);
|
bool fileExist = false;
|
||||||
rsp.msg.status = 0;
|
#ifdef _WIN32
|
||||||
|
// 将 char* 路径转换为 wide-char 格式
|
||||||
|
std::wstring wpath = String2Wstring(path);
|
||||||
|
|
||||||
|
// 使用 GetFileAttributesW() 检查文件是否存在
|
||||||
|
DWORD attributes = GetFileAttributesW(wpath.c_str());
|
||||||
|
if (attributes == INVALID_FILE_ATTRIBUTES) {
|
||||||
|
LOG_ERROR("Path does not exist: {}", path);
|
||||||
|
rsp.msg.status = -2;
|
||||||
|
} else {
|
||||||
|
fileExist = true;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// On Linux and other systems
|
||||||
|
std::string spath(path);
|
||||||
|
if (!fs::exists(spath)) {
|
||||||
|
LOG_ERROR("Path does not exist: {}", path);
|
||||||
|
rsp.msg.status = -2;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
fileExist = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if(fileExist) {
|
||||||
|
SendImageMessage(receiver, path);
|
||||||
|
rsp.msg.status = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
||||||
@ -279,12 +306,38 @@ bool func_send_file(char *path, char *receiver, uint8_t *out, size_t *len)
|
|||||||
if ((path == NULL) || (receiver == NULL)) {
|
if ((path == NULL) || (receiver == NULL)) {
|
||||||
LOG_ERROR("Empty path or receiver.");
|
LOG_ERROR("Empty path or receiver.");
|
||||||
rsp.msg.status = -1;
|
rsp.msg.status = -1;
|
||||||
} else if (!fs::exists(path)) {
|
}
|
||||||
LOG_ERROR("Path does not exists: {}", path);
|
else {
|
||||||
rsp.msg.status = -2;
|
bool fileExist = false;
|
||||||
} else {
|
#ifdef _WIN32
|
||||||
SendImageMessage(receiver, path);
|
// 将 char* 路径转换为 wide-char 格式
|
||||||
rsp.msg.status = 0;
|
std::wstring wpath = String2Wstring(path);
|
||||||
|
|
||||||
|
// 使用 GetFileAttributesW() 检查文件是否存在
|
||||||
|
DWORD attributes = GetFileAttributesW(wpath.c_str());
|
||||||
|
if (attributes == INVALID_FILE_ATTRIBUTES) {
|
||||||
|
LOG_ERROR("Path does not exist: {}", path);
|
||||||
|
rsp.msg.status = -2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fileExist = true;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// On Linux and other systems
|
||||||
|
std::string spath(path);
|
||||||
|
if (!fs::exists(spath)) {
|
||||||
|
LOG_ERROR("Path does not exist: {}", path);
|
||||||
|
rsp.msg.status = -2;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fileExist = true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (fileExist) {
|
||||||
|
SendImageMessage(receiver, path);
|
||||||
|
rsp.msg.status = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
pb_ostream_t stream = pb_ostream_from_buffer(out, *len);
|
||||||
|
Loading…
Reference in New Issue
Block a user