アンドロイドのブレークポイントアップロードを実現する方法は何ですか?
Androidのブレークポイントアップロードの実装方法は、次の2つの方法で実現できます。
- HttpClientやOkHttpを使用したRangeリクエスト:ファイルをアップロードする際に、リクエストヘッダーにRangeフィールドを設定し、ファイルの開始位置を指定してサーバーに送信します。サーバーはリクエストを受け取ると、指定された位置からファイルの書き込みを続行し、断点アップロードを実現します。この方法は、サーバーが断点継続機能をサポートしている必要があります。
サンプルコード(OkHttpを使用):
OkHttpClient client = new OkHttpClient();
File file = new File("path/to/file");
long fileSize = file.length();
Request request = new Request.Builder()
.url("http://example.com/upload")
.addHeader("Content-Range", "bytes " + uploadedBytes + "-" + (fileSize - 1) + "/" + fileSize)
.post(RequestBody.create(MediaType.parse("application/octet-stream"), file))
.build();
Response response = client.newCall(request).execute();
- FTPやSFTPプロトコルを使用する:AndroidアプリでFTPやSFTPライブラリを使用して、サーバーに接続し、ファイルをアップロードする際には途中からの再開を実現する。
サンプルコード(Apache Commons Netライブラリを使用したFTP断片アップロードの実装):
FTPClient ftpClient = new FTPClient();
ftpClient.connect("ftp.example.com");
ftpClient.login("username", "password");
File file = new File("path/to/file");
long uploadedBytes = ftpClient.mlistFile("remote/file").getSize();
ftpClient.setRestartOffset(uploadedBytes);
InputStream inputStream = new FileInputStream(file);
ftpClient.storeFile("remote/file", inputStream);
inputStream.close();
ftpClient.logout();
ftpClient.disconnect();
注目すべき点は、一時停止アップロード機能を使用するには、サーバーが一時停止再開をサポートし、適切な権限と設定が必要であることです。