马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
上传(这里指的是客户端向服务端上传文件,编写的服务端的代码)
- void onUpload(const httplib::Request &req, httplib::Response &res, const httplib::ContentReader &content_reader)
- {
-
-
- if(req.is_multipart_form_data()){
-
-
- httplib::MultipartFormDataItems files;
- content_reader([&](const httplib::MultipartFormData &file){
-
-
- files.push_back(file);
- return true;
- },
- [&](const char *data, size_t data_length){
-
-
- files.back().content.append(data, data_length);
- return true;
- });
- for(const auto& file : files){
-
-
- if(file.filename.empty()){
-
-
- std::cout << file.name << " : " << file.content << std::endl;
- }else{
-
-
- //C++ windows下utf-8转gbk
- char* ansiStr = utf8_2_ansi(file.filename.c_str(), nullptr);
- std::string fileName(ansiStr);
- free(ansiStr);
- ansiStr = nullptr;
- std::ofstream ofs("./" + fileName, std::ofstream::trunc | std::ostream::binary);
- if(ofs.is_open()){
-
-
- ofs.write(file.content.c_str(), file.content.size());
- ofs.close();
- }
- }
- }
- }else{
-
-
- //这里好像并没有一个通用的请求头来标识上传文件的文件名,但是可以服务端和客户端约定一个请求头来标识上传的文件名
- std::string fileName = req.get_header_value("fileName");
- //C++ Windows环境下utf8转换gbk编码,才能正确打开文件
- char* ansiStr = utf8_2_ansi(fileName.c_str(), nullptr);
- fileName.assign(ansiStr);
- free(ansiStr);
- ansiStr = NULL;
- std::ofstream ofs("./" + fileName
复制代码 |