63 lines
1.8 KiB
C
63 lines
1.8 KiB
C
|
|
/**
|
|||
|
|
* 数据(图片等)上传ftp
|
|||
|
|
* */
|
|||
|
|
|
|||
|
|
#ifndef DATATOFTPSRVENGINE_H
|
|||
|
|
#define DATATOFTPSRVENGINE_H
|
|||
|
|
|
|||
|
|
#include "AppCommon.h"
|
|||
|
|
#include "MyYaml.h"
|
|||
|
|
#include "EngineBase.h"
|
|||
|
|
#include "EngineFactory.h"
|
|||
|
|
|
|||
|
|
#include <mutex>
|
|||
|
|
#include <curl/curl.h>
|
|||
|
|
#include <libssh2.h>
|
|||
|
|
#include <libssh2_sftp.h>
|
|||
|
|
#include "json/json.h"
|
|||
|
|
|
|||
|
|
using namespace ai_matrix;
|
|||
|
|
|
|||
|
|
class DataToFtpSrvEngine : public ai_matrix::EngineBase
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
DataToFtpSrvEngine();
|
|||
|
|
~DataToFtpSrvEngine();
|
|||
|
|
|
|||
|
|
APP_ERROR Init() override;
|
|||
|
|
APP_ERROR DeInit() override;
|
|||
|
|
APP_ERROR Process() override;
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
//将字符串中的特殊字符转换为Ascii值(用于防止用户名密码中存在特殊符号)
|
|||
|
|
void Symbol2Ascii(std::string &str);
|
|||
|
|
//libcurl回调函数
|
|||
|
|
static size_t ReadCallBack(void* pBbuffer, size_t size, size_t nmemb, FILE* pFile);
|
|||
|
|
//数据上传
|
|||
|
|
bool DataToFtpSrv(Json::Value &jvFtpData);
|
|||
|
|
//处理上传失败的信息
|
|||
|
|
void DealFtpFailInfo();
|
|||
|
|
//保存上传失败的信息
|
|||
|
|
bool SaveFtpFailInfo(Json::Value &jvFtpData, std::string &strFilePath);
|
|||
|
|
|
|||
|
|
std::string strPort0_;
|
|||
|
|
std::string strType_; //ftp或sftp
|
|||
|
|
std::string strIp_; //服务器ip
|
|||
|
|
int iPort_; //服务器端口
|
|||
|
|
std::string strUser_; //用户名
|
|||
|
|
std::string strPwd_; //密码
|
|||
|
|
std::string strImgPath_; //上传到的路径
|
|||
|
|
int iQuitTime_; //无上传任务延迟XXX秒断开FTP连接
|
|||
|
|
std::string strURL_; //上传url
|
|||
|
|
std::string strFailSavePath_; //失败信息保存文件
|
|||
|
|
std::string strFailSaveBakPath_; //失败信息保存文件备份
|
|||
|
|
|
|||
|
|
CURL *pCurl_ = nullptr;
|
|||
|
|
int iNoDataCnt_ = 0;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
ENGINE_REGIST(DataToFtpSrvEngine)
|
|||
|
|
|
|||
|
|
#endif
|