Download mp3 file from Tomcat server with Java ser

2019-09-30 08:05发布

问题:

I'm making a website to manage music, but I got no idea how to download mp3 from my servlet.

Here's my code:

  filename=new File(imagepath).getName();
  FileOutputStream fil=new FileOutputStream(pathfolder+"/"+filename);

  URL url=new URL("http://192.168.1.4:8080/Demo/upload/"+filename);

  HttpURLConnection urlconnection=null;
  urlconnection=(HttpURLConnection)url.openConnection();

  urlconnection.setRequestMethod("GET");
  urlconnection.setDoOutput(true);
  urlconnection.connect();


  int total_size=urlconnection.getContentLength();
  Log.i("totall sizeeeeeee",""+total_size);
  InputStream inpstream = urlconnection.getInputStream();
  byte[] buffer=new byte[total_size];
  int buffleng=0,download_size=0;
  while((buffleng=inpstream.read(buffer))>0)
  {

  fil.write(buffer,0,buffleng);

  }

  }
  catch(Exception ex){

      ex.printStackTrace();

  }

回答1:

ServletOutputStream stream = null;
BufferedInputStream buf = null;
try {
  stream = response.getOutputStream();
  File mp3 = new File("/myCollectionOfSongs" + "/" + fileName);

  //set response headers
  response.setContentType("audio/mpeg"); 

  response.addHeader("Content-Disposition", "attachment; filename=" + fileName);

  response.setContentLength((int) mp3.length());

  FileInputStream input = new FileInputStream(mp3);
  buf = new BufferedInputStream(input);
  int readBytes = 0;
  //read from the file; write to the ServletOutputStream
  while ((readBytes = buf.read()) != -1)
    stream.write(readBytes);
} catch (IOException ioe) {
  throw new ServletException(ioe.getMessage());
} finally {
  if (stream != null)
    stream.close();
  if (buf != null)
    buf.close();
}