c++ cgi file streaming
c++ cgi file streaming
我一直在尝试通过CGI提供二进制文件(例如MP3文件(。关键是我想使文件只能通过特殊脚本访问,而不是通过网络服务器本身访问。到目前为止,我得到了:
int main() {
cgiWriteEnvironment("/CHANGE/THIS/PATH/capcgi.dat");
cgiHeaderContentType("audio/mpeg");
FILE *fp;
fp=fopen("D:/something.mp3", "r");
char buffer[4];
while (!feof(fp)) {
fread(buffer, 4, 1, fp);
printf("%x",buffer);
}
return 0;
}
它正在向 stdout 发出一些东西,浏览器正在尝试打开 vlc(所以标题应该是正确的...... (但玩家无法处理数据:-(
您正在以十六进制(ASCII 0 和 4 以及 C 等序列(对 .mp3
文件进行编码。 您需要 fwrite()
,这将保留您正在写入的字节的原始格式。 另外:4 字节的缓冲区大小可以工作,但我建议改用 4k (4048( 或 8k (8192( 字节。 在现代机器上,这并不重要,但是对fread()
的调用(相对(慢,因此您希望尽可能少地调用。
另外:这是一件非常奇怪的事情。 您要解决什么问题,为什么普通的Web服务器无法解决它?
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- Google Cloud Pubsub Async Streaming API in C++
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 如何在从文件中读取整数时使用 file.eof()?
- "No such file or directory" C++标头问题
- 使用 sftp_open() 使用 C++ 中的 SFTP libssh 将文件从本地复制到远程时,File 返回 N
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- typedef vector size_type in header file
- make 命令创建 .file,但不创建应用程序文件
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- 使用 编译时。RES File with MinGW G++, .无法识别 RES
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败
- 叮叮当当。target_include_directories "No such file or directory"
- c++ cgi file streaming