用Java托管MP3文件
因此,我正试图模仿本网站的设置: 当像chrome这样的浏览器访问到这个确切的url时,基本上会出现一个播放器,您可以“流式”播放音乐用Java托管MP3文件,java,http,mp3,Java,Http,Mp3,因此,我正试图模仿本网站的设置: 当像chrome这样的浏览器访问到这个确切的url时,基本上会出现一个播放器,您可以“流式”播放音乐 import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; i
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class WebServer {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/test/file.mp3", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "This is the response";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
我试图用一些简单的java代码来模拟这一点。我正在努力弄清楚如何格式化请求以这种方式显示。是否有方法将存储在我的驱动器上的本地文件发送到请求?我一直在努力寻找如何执行此操作的示例您可以使用
文件输入流
读取要发送到浏览器的文件字节:
import java.io.IOException;
导入java.io.OutputStream;
导入java.io.FileInputStream;
导入java.net.InetSocketAddress;
导入com.sun.net.httpserver.HttpExchange;
导入com.sun.net.httpserver.HttpHandler;
导入com.sun.net.httpserver.httpserver;
公共类Web服务器{
公共静态void main(字符串[]args)引发异常{
HttpServer server=HttpServer.create(新的InetSocketAddress(8000),0);
createContext(“/test/file.mp3”,new MyHandler());
setExecutor(null);//创建默认执行器
server.start();
}
静态类MyHandler实现HttpHandler{
@凌驾
公共无效句柄(HttpExchange t)引发IOException{
File File=new File(“path/to/File.mp3”);//创建一个指向mp3文件的新文件对象
/* https://stackoverflow.com/questions/38679686/ :) */
t、 getResponseHeaders().put(“内容类型”、“音频/mpeg”);//确保浏览器知道这是音频文件
t、 sendResponseHeaders(200,file.length());//将文件的长度发送到浏览器
FileInputStream=新建FileInputStream(文件);//打开InputStream以读取文件
OutputStream os=t.GetResponseBy();
byte[]buff=新字节[1024];//创建一个小缓冲区,在读取字节时保存字节
int read=0;//跟踪读取的字节数
//当仍有字节要读取时,将它们发送到客户端
而((read=stream.read(buff))>0){
写操作(buff,0,read);
}
//关闭溪流
os.close();
stream.close();
}
}
}
您可以将mp3文件的字节转储到流中。大多数浏览器都会将其缓冲以供播放。哦,天哪,我不知道该怎么做