Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
用Java托管MP3文件_Java_Http_Mp3 - Fatal编程技术网

用Java托管MP3文件

用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

因此,我正试图模仿本网站的设置:

当像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;
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文件的字节转储到流中。大多数浏览器都会将其缓冲以供播放。哦,天哪,我不知道该怎么做