博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoose上传文件
阅读量:4158 次
发布时间:2019-05-26

本文共 1933 字,大约阅读时间需要 6 分钟。

static FILE*   _CreateTmpFile(const char* pFileName){	char sFilePathName[256] = { 0 };	sprintf(sFilePathName, "%s%s", UPLOAD_FILES_PATH, pFileName);	if (0 == access(sFilePathName, F_OK))	{		remove(sFilePathName);	}	printf("=============create upload file name:%s\n", sFilePathName);	return fopen(sFilePathName, "ab");}void HttpServer::OnHttpEvent(mg_connection *connection, int event_type, void *event_data){	http_message *http_req = (http_message *)event_data;	struct file_writer_data *data = (struct file_writer_data *) connection->user_data;	struct mg_http_multipart_part *mp = (struct mg_http_multipart_part *) event_data;	switch (event_type)	{	case MG_EV_HTTP_REQUEST:		HandleEvent(connection, http_req);		break;	case MG_EV_HTTP_PART_BEGIN:		if (NULL == data)		{			data = new struct file_writer_data;		}		//创建文件		data->fp = _CreateTmpFile(mp->file_name);		if (NULL == data->fp)		{			mg_printf(connection, "%s",				"HTTP/1.1 500 Failed to open a file\r\n"				"Content-Length: 0\r\n\r\n");			connection->flags |= MG_F_SEND_AND_CLOSE;			delete data;			return;		}		//初始化文件长度为0		data->bytes_written = 0;		connection->user_data = (void*)data;		break;	case MG_EV_HTTP_PART_DATA:		if (fwrite(mp->data.p, 1, mp->data.len, data->fp) != mp->data.len) {			mg_printf(connection, "%s",				"HTTP/1.1 500 Failed to write to a file\r\n"				"Content-Length: 0\r\n\r\n");			connection->flags |= MG_F_SEND_AND_CLOSE;			return;		}		data->bytes_written += mp->data.len;		break;	case MG_EV_HTTP_PART_END:		printf("=============upload MG_EV_HTTP_PART_END \n");		mg_printf(connection,			"HTTP/1.1 200 OK\r\n"			"Content-Type: text/plain\r\n"			"Connection: close\r\n\r\n"			"Written %ld of POST data to a temp file\n\n",			(long)ftell(data->fp));		connection->flags |= MG_F_SEND_AND_CLOSE;		fclose(data->fp);		delete data;		data = NULL;		connection->user_data = NULL;		break;	default:		break;	}}

 

./curl --form "fileupload=@1.lpg" http://10.0.192.87/tmp/

转载地址:http://ipbxi.baihongyu.com/

你可能感兴趣的文章
2012年十大科技趋势:Siri将震惊世界
查看>>
2017(第十届)中国绿公司年会马云演讲
查看>>
李彦宏:睡不着觉不是因对手
查看>>
从手Q与微信之争,看腾讯内在的真实矛盾与战略
查看>>
移动互联网的七宗败案
查看>>
互联网十大失败案
查看>>
小米颓势已现,生死劫命悬手机
查看>>
三大隐忧 三星未来路在何方?
查看>>
linux下各种进制转化最简单的的命令行
查看>>
结构体和联合体
查看>>
ACM(Association for Computing Machinery )组织的详细介绍
查看>>
unix高级编程之-命令行参数(实践一)
查看>>
无线网络加密方式对比 .
查看>>
linux中cat命令使用详解
查看>>
Static 作用详述
查看>>
透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)
查看>>
透析ICMP协议(四): 牛刀初试之二 应用篇ping(RAW Socket)
查看>>
再次写给我们这些浮躁的程序员
查看>>
Linux下重要日志文件及查看方式(1)
查看>>
Linux下重要日志文件及查看方式(2)
查看>>