小编Dav*_*vid的帖子

如何在Rust中正确格式化带有媒体文件的HTTP响应

我正在跟踪Rust本书(https://doc.rust-lang.org/book/ch20-00-final-project-a-web-server.html)中的多线程Web服务器示例。

发送文本文件(html)效果很好。购买尝试发送二进制(mp3)文件会在浏览器上显示错误。

要发送MP3文件,我正在尝试以下代码。我认为问题出在将内容转换为字符串。我试过更改标题,尝试另一种Content-Type似乎没有任何用。

let sent_bytes = contents.len();
let contents = &String::from_utf8_lossy(&contents[..]);
let response = format!("HTTP/1.0 200 OK\r\nContent-Type: audio/mpeg\r\nContent-Length: {}\r\n\r\n{}",
            sent_bytes,
            contents
        );
writer.write_all(response.as_bytes()).unwrap();
eprintln!("sent {}bytes\n", sent_bytes);
writer.flush().unwrap();
Run Code Online (Sandbox Code Playgroud)

结果是浏览器无法重现该文件。实际上,如果我设法下载发送的文件,则它已损坏。

我应该如何编码文件以将其发送到浏览器?

http rust

2
推荐指数
1
解决办法
51
查看次数

标签 统计

http ×1

rust ×1