Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数据导出为m3u8文件?_Javascript_Html - Fatal编程技术网

Javascript 如何将数据导出为m3u8文件?

Javascript 如何将数据导出为m3u8文件?,javascript,html,Javascript,Html,我想下载并播放服务器上的m3u8文件。我正在使用以下代码读取m3u8文件并将其发送到web服务器。 浏览器正在显示文件的内容,而不是下载文件。 所以请让我知道,如何下载它 if ((exportHandle = fopen(v3FileName, "a+")) != NULL) { long end = 0, start = 0, pos = 0; char* m3u8FileDataBuff = NULL; fseek(exportHandle, 0, SEEK_END

我想下载并播放服务器上的m3u8文件。我正在使用以下代码读取m3u8文件并将其发送到web服务器。 浏览器正在显示文件的内容,而不是下载文件。 所以请让我知道,如何下载它

if ((exportHandle = fopen(v3FileName, "a+")) != NULL) {
    long end = 0, start = 0, pos = 0;
    char* m3u8FileDataBuff = NULL;
    fseek(exportHandle, 0, SEEK_END);
    end = ftell(exportHandle);
    fseek(exportHandle, 0, SEEK_SET);
    start = ftell(exportHandle);
    pos = end - start;
    m3u8FileDataBuff = (char *) malloc(pos);
    end = 0;
    start = 0;
    fread(m3u8FileDataBuff, 1, pos, exportHandle);
    pClienCommunication->writeBuffer(m3u8FileDataBuff, pos);
    free(m3u8FileDataBuff);
    fclose(exportHandle);
 }

客户端的web浏览器正在显示内容,因为响应的MIME类型要么为nil,要么类似于“text/plain”。正确设置http响应头以指示m3u8文件的mime类型(
application/x-mpegURL
vnd.apple.mpegURL

您提供的代码似乎没有围绕响应头设置任何内容,只是内容

检查
pClienCommunication->
的可用API,或者检查其来源地,调整响应标题的选项是什么

或者可能在Web服务器中设置一些规则来服务响应,设置特定URL的MIME类型,或者基于响应内容(但是在Web服务器级别上应用这些规则通常更昂贵,然后在C++部分中创建响应调整响应)。


为什么这个标记的C++,当代码本身是C类的,它的所有问题。在现代C++中,你从来不会做“fCutter(…)”之类的事情,因为这是在文件包装类的析构函数中完成的,所以你不冒FFAD等异常情况下跳过FFACK的情况。 所以在现代C++中,这些东西看起来应该有点像:

{
    SomeFileClass exportFile(v3FileName, "a+");
    if (exportFile.isOK()) {
        SomeFileContentBuffer data = exportFile.read();
        pClienCommunication->writeBuffer(data.asCharPtr(), data.size());
    }
}
因此,您不能忘记释放任何文件句柄或缓冲区内存(因为特定帮助器类的析构函数将处理这个问题)