2012-04-10 3 views
1

내 코드가있는 PHP 페이지에 PDF 파일을 업로드하려고합니다. 하지만 업로드 할 수있는 부분은 조금 있습니다. 파이어 폭스에서 열면 PDF가 손상되었다고합니다. 또한 a의 값을 보면 파일의 일부일뿐입니다. 어떻게 해결할 수 있을까요?C Wininet File Upload with HTTP Post

char *getmem(); 
int main(int argc, char *argv[]) 
{ 

char *a = getmem(); 
printf ("%s\n",a); 
     HINTERNET hInet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); 
char frmdata[160000]; 
sprintf(frmdata,"-----------------------------acebdf13572468\r\nContent-Disposition: form-data; name=\"uploaded\"; filename=\"C:\\Users\\pen\\Desktop\\perltut.pdf\"\r\nContent-Type: application/pdf\r\n\r\n%s\r\n-----------------------------acebdf13572468--\r\n",a); 

char *hdrs = "Content-Type: multipart/form-data; boundary=---------------------------acebdf13572468\nUser-Agent: aa"; 
MessageBox(0,a,a,1); 
     HINTERNET hConnect = InternetConnect(
         hInet, 
         "host", 
         80, 
         NULL, 
         NULL, 
         INTERNET_SERVICE_HTTP, 
         0, 0 
     ); 
LPCSTR accept[2]={"*/*", NULL}; 
     HINTERNET hRequest = HttpOpenRequest(
       hConnect, 
       "POST", 
       "/path", 
       NULL, NULL, NULL, 0, 0 
     ); 

     BOOL ret = HttpSendRequest(hRequest, hdrs,strlen(hdrs), frmdata, strlen(frmdata)); 





    system("pause"); 
    return 0; 
} 



char *getmem(){ 


FILE *fp; 
long len; 
char *buf; 
fp=fopen("C:\\Users\\ff\\Desktop\\perltut.pdf","rb"); 
fseek(fp,0,SEEK_END); 
len=ftell(fp); 
fseek(fp,0,SEEK_SET);/
buf=(char *)malloc(len); 
fread(buf,len,1,fp);/
fclose(fp); 
return buf; 
} 

답변

0

파일 끝에 문자열의 끝으로 반복되는 0 문자가 있습니다. 이진 데이터에는 sprintf를 사용할 수 없습니다.