Send .txt file, document file to the server in android

后端 未结 4 425
抹茶落季
抹茶落季 2020-12-09 00:12

I am developing an application in which I am sending data in string format to the server. Below is my code. It is working fine. But now my question is how can I send whole .

相关标签:
4条回答
  • 2020-12-09 00:58
    HttpURLConnection connection = null;
    DataOutputStream outputStream = null;
    DataInputStream inputStream = null;
    String pathToOurFile = "/data/file_to_send.mp3";
    String urlServer = "http://192.168.1.1/handle_upload.php";
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";
    
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1*1024*1024;
    
    try
    {
        FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
    
        URL url = new URL(urlServer);
        connection = (HttpURLConnection) url.openConnection();
    
        // Allow Inputs & Outputs.
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setUseCaches(false);
    
        // Set HTTP method to POST.
        connection.setRequestMethod("POST");
    
        connection.setRequestProperty("Connection", "Keep-Alive");
        connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
    
        outputStream = new DataOutputStream( connection.getOutputStream() );
        outputStream.writeBytes(twoHyphens + boundary + lineEnd);
        outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd);
        outputStream.writeBytes(lineEnd);
    
        bytesAvailable = fileInputStream.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        buffer = new byte[bufferSize];
    
        // Read file
        bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    
        while (bytesRead > 0)
        {
            outputStream.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        }
    
        outputStream.writeBytes(lineEnd);
        outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
        // Responses from the server (code and message)
        serverResponseCode = connection.getResponseCode();
        serverResponseMessage = connection.getResponseMessage();
    
        fileInputStream.close();
        outputStream.flush();
        outputStream.close();
    }
    catch (Exception ex)
    {
        //Exception handling
    }
    
    0 讨论(0)
  • 2020-12-09 00:59

    Try this code.. this is perfectly working for me..

    public class ServerActivity extends Activity {
    
        TextView messageText;
        Button uploadButton;
        int serverResponseCode = 0;
        ProgressDialog dialog = null;
    
        String upLoadServerUri = null;
    
        final String uploadFilePath = "mypath";
         final String uploadFileName = "myfile";
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_server);
    
            uploadButton = (Button)findViewById(R.id.uploadButton);
            messageText  = (TextView)findViewById(R.id.messageText);
    
            messageText.setText("Uploading file path :- 'path"+uploadFileName+"'");
    
    
            upLoadServerUri = "serverpath";
    
            uploadButton.setOnClickListener(new OnClickListener() 
            {            
                @Override
                public void onClick(View v)
                {
    
                    dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...", true);
    
                    new Thread(new Runnable()
                    {
                            public void run() 
                            {
                                 runOnUiThread(new Runnable() 
                                 {
                                        public void run() 
                                        {
                                            messageText.setText("uploading started.....");
                                        }
                                    });                      
    
                                 uploadFile(uploadFilePath + "" + uploadFileName);
    
                            }
                          }).start();        
                    }
                });
        }
    
        public int uploadFile(String sourceFileUri)
        {
    
    
              String fileName = sourceFileUri;
    
              HttpURLConnection conn = null;
              DataOutputStream dos = null;  
              String lineEnd = "\r\n";
              String twoHyphens = "--";
              String boundary = "*****";
              int bytesRead, bytesAvailable, bufferSize;
              byte[] buffer;
              int maxBufferSize = 1 * 1024 * 1024; 
              File sourceFile = new File(sourceFileUri); 
    
              if (!sourceFile.isFile())
              {
    
                   dialog.dismiss(); 
    
                   Log.e("uploadFile", "Source File not exist :"
                                       +uploadFilePath + "" + uploadFileName);
    
                   runOnUiThread(new Runnable() 
                   {
                       public void run() 
                       {
                           messageText.setText("Source File not exist :" +uploadFilePath + "" + uploadFileName);
                       }
                   }); 
    
                   return 0;
    
              }
              else
              {
                   try 
                   { 
    
                         // open a URL connection to the Servlet
                       FileInputStream fileInputStream = new FileInputStream(sourceFile);
                       URL url = new URL(upLoadServerUri);
    
                       // Open a HTTP  connection to  the URL
                       conn = (HttpURLConnection) url.openConnection(); 
                       conn.setDoInput(true); // Allow Inputs
                       conn.setDoOutput(true); // Allow Outputs
                       conn.setUseCaches(false); // Don't use a Cached Copy
                       conn.setRequestMethod("POST");
                       conn.setRequestProperty("Connection", "Keep-Alive");
                       conn.setRequestProperty("ENCTYPE", "multipart/form-data");
                       conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                       conn.setRequestProperty("uploaded_file", fileName); 
    
                       dos = new DataOutputStream(conn.getOutputStream());
    
                       dos.writeBytes(twoHyphens + boundary + lineEnd); 
                       dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                                                 + fileName + "\"" + lineEnd);
    
                       dos.writeBytes(lineEnd);
    
                       // create a buffer of  maximum size
                       bytesAvailable = fileInputStream.available(); 
    
                       bufferSize = Math.min(bytesAvailable, maxBufferSize);
                       buffer = new byte[bufferSize];
    
                       // read file and write it into form...
                       bytesRead = fileInputStream.read(buffer, 0, bufferSize);  
    
                       while (bytesRead > 0) 
                       {
    
                         dos.write(buffer, 0, bufferSize);
                         bytesAvailable = fileInputStream.available();
                         bufferSize = Math.min(bytesAvailable, maxBufferSize);
                         bytesRead = fileInputStream.read(buffer, 0, bufferSize);   
    
                        }
    
                       // send multipart form data necesssary after file data...
                       dos.writeBytes(lineEnd);
                       dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
                       // Responses from the server (code and message)
                       serverResponseCode = conn.getResponseCode();
                       String serverResponseMessage = conn.getResponseMessage();
    
                       Log.i("uploadFile", "HTTP Response is : " 
                               + serverResponseMessage + ": " + serverResponseCode);
    
                       if(serverResponseCode == 200)
                       {
    
                           runOnUiThread(new Runnable() 
                           {
                                public void run()
                                {
    
                                    String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"+" serverpath"
                                                  +uploadFileName;
    
                                    messageText.setText(msg);
                                    Toast.makeText(UploadToServer.this, "File Upload Complete.", 
                                                 Toast.LENGTH_SHORT).show();
                                }
                            });                
                       }    
    
                       //close the streams //
                       fileInputStream.close();
                       dos.flush();
                       dos.close();
    
                  } 
                   catch (MalformedURLException ex) 
                   {
    
                      dialog.dismiss();  
                      ex.printStackTrace();
    
                      runOnUiThread(new Runnable() 
                      {
                          public void run() 
                          {
                              messageText.setText("MalformedURLException Exception : check script url.");
                              Toast.makeText(UploadToServer.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
                          }
                      });
    
                      Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
                  } 
                   catch (Exception e) 
                   {
    
                      dialog.dismiss();  
                      e.printStackTrace();
    
                      runOnUiThread(new Runnable() 
                      {
                          public void run()
                          {
                              messageText.setText("Got Exception : see logcat ");
                              Toast.makeText(UploadToServer.this, "Got Exception : see logcat ", 
                                      Toast.LENGTH_SHORT).show();
                          }
                      });
                      Log.e("Upload file to server Exception", "Exception : " 
                                                       + e.getMessage(), e);  
                  }
                  dialog.dismiss();       
                  return serverResponseCode; 
    
               } 
             }
         }
    

    Hope this will help u :-)

    0 讨论(0)
  • 2020-12-09 01:02

    try this code to create txt file write string to that file and send it to server...

    File f = new File(Environment.getExternalStorageDirectory(),"new");
            if(!f.exists())
            {
                f.mkdir();
            }
            File file = new File("new.txt");
            FileWriter w = new FileWriter("/sdcard/new/new.txt");
            BufferedWriter out = new BufferedWriter(w);
            out.write(data);
            out.flush();
            out.close();
                              String file_name = "/sdcard/new/new.txt";
    
            File file1 = new File(file_name);  
            socket = new Socket("117.218.28.70", 2020);
    
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());  
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());  
    
            oos.writeObject(file1.getName());  
    
            FileInputStream fis = new FileInputStream(file1);  
            byte [] buffer = new byte[450000];  
            Integer bytesRead = 0;  
    
            while ((bytesRead = fis.read(buffer)) > 0) 
            {  
                oos.writeObject(bytesRead);  
                oos.writeObject(Arrays.copyOf(buffer, buffer.length));  
            }  
            oos.close();  
            ois.close();  
            System.exit(0);
    
    0 讨论(0)
  • 2020-12-09 01:10

    This code uploads data (images, mp3′s, text files etc..) to HTTP server

    HttpURLConnection connection = null;
    DataOutputStream outputStream = null;
    DataInputStream inputStream = null;
    
    String pathToOurFile = "/data/file_to_send.mp3";
    String urlServer = "http://192.168.1.1/handle_upload.php";
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";
    
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1*1024*1024;
    
    try
    {
    FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
    
    URL url = new URL(urlServer);
    connection = (HttpURLConnection) url.openConnection();
    
    // Allow Inputs & Outputs
    connection.setDoInput(true);
    connection.setDoOutput(true);
    connection.setUseCaches(false);
    
    // Enable POST method
    connection.setRequestMethod("POST");
    
    connection.setRequestProperty("Connection", "Keep-Alive");
    connection.setRequestProperty("Content-Type", "multipart/formdata;boundary="+boundary);
    
    outputStream = new DataOutputStream( connection.getOutputStream() );
    outputStream.writeBytes(twoHyphens + boundary + lineEnd);
    outputStream.writeBytes("Content-Disposition: form-data;
    name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd);
    outputStream.writeBytes(lineEnd);
    
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    buffer = new byte[bufferSize];
    
    // Read file
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    
    while (bytesRead > 0)
    {
    outputStream.write(buffer, 0, bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    }
    
    outputStream.writeBytes(lineEnd);
    outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
    // Responses from the server (code and message)
    serverResponseCode = connection.getResponseCode();
    serverResponseMessage = connection.getResponseMessage();
    
    fileInputStream.close();
    outputStream.flush();
    outputStream.close();
    }
    catch (Exception ex)
    {
    //Exception handling
      }
    
    0 讨论(0)
提交回复
热议问题