Android file uploader with server-side php

前端 未结 3 1347
别那么骄傲
别那么骄傲 2020-12-01 03:54

I\'ve been looking for a solution to this for hours, but I can\'t find any.

Basically, I want to upload, from my android device, files to an http website. However, I

相关标签:
3条回答
  • 2020-12-01 04:27

    Yeah, so I found the java-side of things. This works, so... yeah.

    public class Uploader extends Activity {
    
        private String Tag = "UPLOADER";
        private String urlString = "YOUR_ONLINE_PHP";
        HttpURLConnection conn;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            String exsistingFileName = "/sdcard/uploader/data/testfile";
    
            String lineEnd = "\r\n";
            String twoHyphens = "--";
            String boundary = "*****";
            try {
                // ------------------ CLIENT REQUEST
    
                Log.e(Tag, "Inside second Method");
    
                FileInputStream fileInputStream = new FileInputStream(new File(
                        exsistingFileName));
    
                // open a URL connection to the Servlet
    
                URL url = new URL(urlString);
    
                // Open a HTTP connection to the URL
    
                conn = (HttpURLConnection) url.openConnection();
    
                // Allow Inputs
                conn.setDoInput(true);
    
                // Allow Outputs
                conn.setDoOutput(true);
    
                // Don't use a cached copy.
                conn.setUseCaches(false);
    
                // Use a post method.
                conn.setRequestMethod("POST");
    
                conn.setRequestProperty("Connection", "Keep-Alive");
    
                conn.setRequestProperty("Content-Type",
                        "multipart/form-data;boundary=" + boundary);
    
                DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
    
                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos
                        .writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
                                + exsistingFileName + "" + lineEnd);
                dos.writeBytes(lineEnd);
    
                Log.e(Tag, "Headers are written");
    
                // create a buffer of maximum size
    
                int bytesAvailable = fileInputStream.available();
                int maxBufferSize = 1000;
                // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
                byte[] buffer = new byte[bytesAvailable];
    
                // read file and write it into form...
    
                int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
    
                while (bytesRead > 0) {
                    dos.write(buffer, 0, bytesAvailable);
                    bytesAvailable = fileInputStream.available();
                    bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
                    bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
                }
    
                // send multipart form data necesssary after file data...
    
                dos.writeBytes(lineEnd);
                dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
                // close streams
                Log.e(Tag, "File is written");
                fileInputStream.close();
                dos.flush();
                dos.close();
    
            } catch (MalformedURLException ex) {
                Log.e(Tag, "error: " + ex.getMessage(), ex);
            }
    
            catch (IOException ioe) {
                Log.e(Tag, "error: " + ioe.getMessage(), ioe);
            }
    
            try {
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                        .getInputStream()));
                String line;
                while ((line = rd.readLine()) != null) {
                    Log.e("Dialoge Box", "Message: " + line);
                }
                rd.close();
    
            } catch (IOException ioex) {
                Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-01 04:45

    If you want to upload files that is larger than 2MB you need to edit your PHP configuraton

    ; Maximum allowed size for uploaded files.
    ; http://php.net/upload-max-filesize
    upload_max_filesize = 2M
    

    Eg:

    ; Maximum allowed size for uploaded files.
    ; http://php.net/upload-max-filesize
    upload_max_filesize = 10M
    

    That would allow you to upload files up to 10MB of size

    0 讨论(0)
  • 2020-12-01 04:47

    For the PHP side of things take a look at

    move_uploaded_file and also the global $_FILES

    http://php.net/manual/en/function.move-uploaded-file.php

    http://php.net/manual/en/features.file-upload.php

    0 讨论(0)
提交回复
热议问题