Improve:goahead show picture.
This commit is contained in:
parent
4780a46e8a
commit
ddb61c4b91
|
@ -68,6 +68,7 @@ set(CURL_SHARED_LIBS_PATH "/mnt/mmc")
|
||||||
# ------------ build curl + openssl ------------ end
|
# ------------ build curl + openssl ------------ end
|
||||||
|
|
||||||
# ------------ build AppManager ------------ #
|
# ------------ build AppManager ------------ #
|
||||||
set(APP_MANAGER_HTTP_SERVER_IP "localhost")
|
# set(APP_MANAGER_HTTP_SERVER_IP "localhost")
|
||||||
|
set(APP_MANAGER_HTTP_SERVER_IP "192.168.1.29")
|
||||||
set(APP_MANAGER_HTTP_SERVER_PORT "8080")
|
set(APP_MANAGER_HTTP_SERVER_PORT "8080")
|
||||||
# ------------ build AppManager end ------------ #
|
# ------------ build AppManager end ------------ #
|
|
@ -53,7 +53,9 @@ protected:
|
||||||
// ../output_files/test/bin/AppManagerTest --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_Demo0
|
// ../output_files/test/bin/AppManagerTest --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_Demo0
|
||||||
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_Demo0)
|
TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_Demo0)
|
||||||
{
|
{
|
||||||
|
std::shared_ptr<VAppMonitor> monitor = AppManagerTestTool::MakeMonitorMock();
|
||||||
IAppManager::GetInstance()->Init(mAppParam);
|
IAppManager::GetInstance()->Init(mAppParam);
|
||||||
|
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||||
IAppManager::GetInstance()->UnInit();
|
IAppManager::GetInstance()->UnInit();
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
static int finished = 0;
|
static int finished = 0;
|
||||||
static HttpHandleCallback gHttpHandle = NULL;
|
static HttpHandleCallback gHttpHandle = NULL;
|
||||||
|
constexpr int UNKNOWN_LENGTH = -1;
|
||||||
static void sigHandler(int signo)
|
static void sigHandler(int signo)
|
||||||
{
|
{
|
||||||
LogInfo("Stop goahead web server.\n");
|
LogInfo("Stop goahead web server.\n");
|
||||||
|
@ -87,7 +88,7 @@ static void response_handle(const char *responseStr, void *context)
|
||||||
static bool AppRequestHandle(Webs *wp)
|
static bool AppRequestHandle(Webs *wp)
|
||||||
{
|
{
|
||||||
websSetStatus(wp, 200);
|
websSetStatus(wp, 200);
|
||||||
websWriteHeaders(wp, -1, 0);
|
websWriteHeaders(wp, UNKNOWN_LENGTH, 0);
|
||||||
websWriteHeader(wp, "Content-Type", "text/plain");
|
websWriteHeader(wp, "Content-Type", "text/plain");
|
||||||
websWriteEndHeaders(wp);
|
websWriteEndHeaders(wp);
|
||||||
gHttpHandle(wp->url, 0, response_handle, wp);
|
gHttpHandle(wp->url, 0, response_handle, wp);
|
||||||
|
@ -101,7 +102,7 @@ static bool AppUploadHandle(Webs *wp)
|
||||||
char *upfile = nullptr;
|
char *upfile = nullptr;
|
||||||
|
|
||||||
websSetStatus(wp, 200);
|
websSetStatus(wp, 200);
|
||||||
websWriteHeaders(wp, -1, 0);
|
websWriteHeaders(wp, UNKNOWN_LENGTH, 0);
|
||||||
websWriteHeader(wp, "Content-Type", "text/plain");
|
websWriteHeader(wp, "Content-Type", "text/plain");
|
||||||
websWriteEndHeaders(wp);
|
websWriteEndHeaders(wp);
|
||||||
|
|
||||||
|
@ -126,6 +127,58 @@ static bool AppUploadHandle(Webs *wp)
|
||||||
websDone(wp);
|
websDone(wp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
static bool AppGetThumbnail(Webs *wp)
|
||||||
|
{
|
||||||
|
LogInfo("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\n");
|
||||||
|
websSetStatus(wp, 200);
|
||||||
|
websWriteHeaders(wp, UNKNOWN_LENGTH, 0);
|
||||||
|
websWriteHeader(wp, "Content-Type", "image/jpeg");
|
||||||
|
websWriteEndHeaders(wp);
|
||||||
|
// gHttpHandle(wp->url, 0, response_handle, wp);
|
||||||
|
// websWrite(wp, "ssssssssssssssssssssssssss");
|
||||||
|
|
||||||
|
char imagePath[] = "./34a396526922a33e97906920dbfef2a5.jpg";
|
||||||
|
FILE *file = nullptr;
|
||||||
|
unsigned char *buffer = nullptr;
|
||||||
|
size_t bytesRead = 0;
|
||||||
|
long int fsize = 0;
|
||||||
|
/* 打开图片文件 */
|
||||||
|
file = fopen(imagePath, "rb");
|
||||||
|
if (file == nullptr) {
|
||||||
|
/* 文件打开失败,返回 404 错误 */
|
||||||
|
LogError("Open picture failed.\n");
|
||||||
|
goto END;
|
||||||
|
}
|
||||||
|
// 获取文件大小
|
||||||
|
fseek(file, 0, SEEK_END);
|
||||||
|
fsize = ftell(file);
|
||||||
|
rewind(file);
|
||||||
|
// 分配足够大的缓冲区来存储文件内容
|
||||||
|
buffer = (unsigned char *)malloc(fsize + 1);
|
||||||
|
if (!buffer) {
|
||||||
|
LogError("malloc failed.\n");
|
||||||
|
fclose(file);
|
||||||
|
goto END;
|
||||||
|
}
|
||||||
|
memset(buffer, 0, fsize + 1);
|
||||||
|
// 读取文件内容到缓冲区
|
||||||
|
bytesRead = fread(buffer, 1, fsize, file);
|
||||||
|
if (bytesRead != fsize) {
|
||||||
|
LogError("fread picture failed.\n");
|
||||||
|
free(buffer);
|
||||||
|
fclose(file);
|
||||||
|
goto END;
|
||||||
|
}
|
||||||
|
// websWrite(wp, "%s", buffer);
|
||||||
|
websWriteBlock(wp, (cchar *)buffer, fsize);
|
||||||
|
|
||||||
|
END:
|
||||||
|
if (buffer) {
|
||||||
|
free(buffer);
|
||||||
|
}
|
||||||
|
websDone(wp);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
StatusCode WebServerInit(const WebServerParam webParam)
|
StatusCode WebServerInit(const WebServerParam webParam)
|
||||||
{
|
{
|
||||||
CheckUploadDir();
|
CheckUploadDir();
|
||||||
|
@ -161,6 +214,8 @@ StatusCode WebServerInit(const WebServerParam webParam)
|
||||||
websDefineHandler("AppUploadHandle", 0, AppUploadHandle, 0, 0);
|
websDefineHandler("AppUploadHandle", 0, AppUploadHandle, 0, 0);
|
||||||
websAddRoute("/upload", "AppUploadHandle", 0);
|
websAddRoute("/upload", "AppUploadHandle", 0);
|
||||||
}
|
}
|
||||||
|
websDefineHandler("AppGetThumbnail", 0, AppGetThumbnail, 0, 0);
|
||||||
|
websAddRoute("/app/getthumbnail", "AppGetThumbnail", 0);
|
||||||
websServiceEvents(&finished);
|
websServiceEvents(&finished);
|
||||||
logmsg(1, "Instructed to exit\n");
|
logmsg(1, "Instructed to exit\n");
|
||||||
websClose();
|
websClose();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user