/*strTmpResult是文件或图片字符串 * filePath文件需要写入的地址或路径 */ int writeFile(std::string &strTmpResult,std::string &filePath) { int i,len = strTmpResult.length(); unsigned char pOut[len]; for (i=0;i<len;++i) { pOut[i] = strTmpResult[i]; } FILE* pFout ; // 检查文件是否上传成功 if ((pFout = fopen(filePath.c_str(), "wb+")) == NULL) { fclose(pFout); TLOG_ERR("writeFile上传文件失败"); throw Ex(ERR_RULE_FILEUPLOAD); } fseek(pFout, 0, SEEK_SET); // 附件内容 if (fwrite(pOut, len, 1, pFout) < 0) { fclose(pFout); TLOG_ERR("writeFile上传文件失败2"); throw Ex(ERR_RULE_FILEUPLOAD); } fclose(pFout); TLOG_ERR("writeFile写完成"); return 0; }
说一说我遇到的事:
if ((pFout = fopen(filePath.c_str(), "wb+")) == NULL)
这句中我一开始是将“wb+"改成”w+",其实是复制人家的代码,导致的结果是我的图片写成功了,但是就是打开后看不成,最后费了好大的劲查了结果才知道应该加入b,要以二进制的形式写图片就成功了