繁体   English   中英

将文件从Android设备发送到服务器?

[英]Send files from android device to server?

如何将所有文件从sdcard发送到服务器,我可以通过以下代码将文件从设备推到服务器:

public void btnclick(View v) {

        String pathToOurFile = "/mnt/sdcard/" + "q.3gp";
        String urlServer = "http://www.google.com/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);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.setRequestProperty("ENCTYPE", "multipart/form-data");
            connection.setRequestProperty("Content-Type",
                    "multipart/form-data;boundary=" + boundary);
            connection.setRequestProperty("uploaded_file", "gopivideo");
            outputStream = new DataOutputStream(connection.getOutputStream());
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream
                    .writeBytes("Content-Disposition: form-data; name=\"sample\";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)
            int serverResponseCode = connection.getResponseCode();
            String serverResponseMessage = connection.getResponseMessage();

            Toast.makeText(getApplicationContext(),
                    serverResponseCode + "," + serverResponseMessage,
                    Toast.LENGTH_LONG).show();

            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
        } catch (Exception ex) {
            // Exception handling
        }
    }
}

通过一次推送即可将任何类型的文件上传到服务器,这很酷,但是需要循环sdcard中的所有文件并一次发送。 谢谢

您可以使用Multipart发布请求执行此操作:(这样,您无需创建json)

   HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(serverURL);
    MultipartEntity postEntity = new MultipartEntity();
    File file = new File("Your File path on SD card");
    postEntity.addPart("fileupload", new FileBody(file, "image/jpeg"));
    postEntity.addPart("loginKey", new StringBody(""+loginKey));
    postEntity.addPart("message", new StringBody(message));
    postEntity.addPart("token", new StringBody(token));
    post.setEntity(postEntity);
    response = client.execute(post);

并添加Mime4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM