从机器人发送音频文件与Servlet [英] Sending audio file from android to servlet

查看:194
本文介绍了从机器人发送音频文件与Servlet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从Android手机发送音频文件的servlet。我已经冲浪这么多的网站,但没有得到妥善解决。任何人都可以请帮助me.How很多方面都存在从Android的发送音频文件到服务器。

How to send an audio file from android phone to servlet. i have surfed so many sites but not getting the proper solution. Can anyone please help me.How many ways are there for sending an audio file from android to server.

推荐答案

最后我从机器人与Servlet发送音频文件已经成功。以下是我的客户端code

Finally i have succeed in sending audio file from android to servlet. Following is my client side code

public class MainActivity extends Activity {

//   static final String UPLOAD_URL = "http://192.168.223.1:8080/ReceiveFileServlet/RecFileServlet";
     static final int BUFFER_SIZE = 4096;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new sendFile().execute(new String[] { "http://10.0.2.2:8080/ReceiveFileServlet/RecFileServlet" });
    }
    private class sendFile extends AsyncTask<String, Void, String>
    {

        @Override
        protected String doInBackground(String... urls) {
            HttpURLConnection httpConn=null;

            try
            {
            String file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Tdt.aac";
            File uploadFile = new File(file);
            FileInputStream inputStream = new FileInputStream(uploadFile);

            System.out.println("File to upload: " + file);

            // creates a HTTP connection
            URL url1 = new URL(urls[0]);
            httpConn = (HttpURLConnection) url1.openConnection();
            httpConn.setUseCaches(false);
            httpConn.setDoOutput(true);
            httpConn.setRequestMethod("POST");
            httpConn.setRequestProperty("fileName", uploadFile.getName());
            httpConn.connect();
            // sets file name as a HTTP header

            Log.i("fileName", uploadFile.getName());
            // opens output stream of the HTTP connection for writing data

            OutputStream outputStream = httpConn.getOutputStream();

            // Opens input stream of the file for reading data


            byte[] buffer = new byte[BUFFER_SIZE];
            int bytesRead = -1;

            System.out.println("Start writing data...");

            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }

            System.out.println("Data was written.");
            outputStream.close();
            inputStream.close();
            }
            catch(SocketTimeoutException e)
            {
                 Log.e("Debug", "error: " + e.getMessage(), e);
            }
            catch (MalformedURLException ex)
             {
                  Log.e("Debug", "error: " + ex.getMessage(), ex);
             }
             catch (IOException ioe)
             {
                  Log.e("Debug", "error: " + ioe.getMessage(), ioe);
             }

            try
            {

            // always check HTTP response code from server
            int responseCode = httpConn.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                // reads server's response
                BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
                String response = reader.readLine();
                System.out.println("Server's response: " + response);
            } else {
                System.out.println("Server returned non-OK code: " + responseCode);
            }
            }
             catch (IOException ioex){
                  Log.e("Debug", "error: " + ioex.getMessage(), ioex);
             }
            return null;
        }
        @Override
        protected void onPostExecute(String result) {             
        }

        @Override
        protected void onPreExecute() {
        }

        @Override
        protected void onProgressUpdate(Void... values) {
        }
    }
}

这里是我的servlet code

here is my servlet code

public class RecFileServlet extends HttpServlet {
   static final String SAVE_DIR = "D:/temp/";
    static final int BUFFER_SIZE = 4096;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doPost(req, resp);
    }


    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        // Gets file name for HTTP header
        String fileName = request.getHeader("fileName");
        File saveFile = new File(SAVE_DIR + fileName);

        // prints out all header values
        System.out.println("===== Begin headers =====");
        Enumeration<String> names = request.getHeaderNames();
        while (names.hasMoreElements()) {
            String headerName = names.nextElement();
            System.out.println(headerName + " = " + request.getHeader(headerName));
        }
        System.out.println("===== End headers =====\n");

        // opens input stream of the request for reading data
        InputStream inputStream = request.getInputStream();

        // opens an output stream for writing file
        FileOutputStream outputStream = new FileOutputStream(saveFile);

        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead = -1;
        System.out.println("Receiving data...");

        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }

        System.out.println("Data received.");
        outputStream.close();
        inputStream.close();

        System.out.println("File written to: " + saveFile.getAbsolutePath());

        // sends response to client
        response.getWriter().print("UPLOAD DONE");
    }

}

这篇关于从机器人发送音频文件与Servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆