- 论坛徽章:
- 0
|
代码如下:
STATUS uploadFile(char *uploadUrl,int fileType)
{
struct sockaddr_in sin;
int retval,sockfd;
struct stat finfo;
char *sServer;
char *sPath;
int nPort;
long fileLength;
fp = fopen( "./testfile","rb" );
if (fp){
fseek(fp,0,SEEK_END);
fileLength = ftell(fp);
}
parseUrl(uploadUrl,&sServer,&nPort,&sPath);
trace(INFO,"%s:%d: server is: %s, port is %d,path is %s\n",__FILE__,__LINE__,sServer,nPort,sPath);
setHttpUploadHeader(sPath,sServer,fileLength);
trace(INFO,"%s:%d: http request is:\n %s\n",__FILE__,__LINE__,httpRequest);
if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0){
trace(INFO,"%s:%d: Socket error\n",__FILE__,__LINE__);
return DP_ERROR;
}
bzero(&sin, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(nPort);
sin.sin_addr.s_addr = inet_addr(sServer);
if (connect(sockfd,(struct sockaddr *)&sin,sizeof(sin))<0)
{
trace(ERROR,"%s:%d: Connect upload server error!\n",__FILE__,__LINE__);
return DP_ERROR;
}else{
trace(ERROR,"%s:%d: Connect upload server OK!\n",__FILE__,__LINE__);
}
size_t r_len;
rewind(fp);
memset(buffer,0,BUFFER_SIZE);
trace(INFO,"%s:%d: before while...\n",__FILE__,__LINE__);
while (!feof(fp))
{
r_len = fread(buffer,1,BUFFER_SIZE,fp);
trace(INFO,"%s:%d: Enter while... r_len=%d\n",__FILE__,__LINE__,r_len);
write(sockfd,buffer,r_len);
}
close(sockfd);
fclose(fp);
return DP_OK;
}
代码执行后在服务器上没有找到文件,感觉自己还是没有搞清楚机制。
各位大侠帮忙看看!
[ 本帖最后由 garyli0314 于 2008-10-25 14:40 编辑 ] |
|