我想連接一些字符串和一個jpeg二進制文件的內容,以在LINUX下C發出一個http post請求。如果我使用正常的字符串操作,jpeg中的二進制內容一旦遇到0x00就會被終止。 (例如,如果我的HEX二進制文件爲FF D8 FF C0 00 11 08 ...),在concat之後,二進制部分將以FF D8 FF C0結束。concat字符串與二進制:二進制內容被截斷時,命中0x00
有誰知道如何解決這個問題?語言是C.謝謝
fp = fopen(filename, "rb")
fseek(fp, 0, SEEK_END);
fileLen = ftell(fp);
fseek(fp, 0, SEEK_SET);
buffer = (char *)malloc(fileLen);
fread(buffer, fileLen, 1, fp);
//now buffer has the content of the JPEG image
//next combine both string and binary together to make a http post request
snprintf(poststr, MAXSUB,
"--%s\r\nContent-Disposition: form-data;"
"name=\"datafile\"; filename=\"%s\"\r\nContent-Type: image/jpeg\r\n\r\n"
"%s\r\n"
"--%s\r\n"
"Content-Disposition: form-data; name=\"boxkey\"\r\n\r\n%s\r\n"
"--%s--", boundary, filename, buffer, boundary, key, boundary);
嗨,感謝您的快速和乾淨的答覆!我是否必須對二進制部分進行編碼才能使其工作?或者我可以讓它們保持原樣。 –
我建議編碼,它將確保任何客戶端/服務器可以處理您的消息,而不會因爲編碼或其他問題而破壞它。您的消息將是純ASCII。此外,使用Base64進行編碼,因爲它比quoted-printable更緊湊。 –
嗯,如果我使用Based64編碼我的二進制部分,我在哪裏解碼它或者服務器會爲我解碼? –