0
How to upload the . db file (Sqlite backup), from the android device to a server using the Okhttp, java and PHP library?
0
How to upload the . db file (Sqlite backup), from the android device to a server using the Okhttp, java and PHP library?
1
In the Okhttp Recipes documentation there are some common demos. More specifically, you will have to use class properties MultipartBody.Builder() for sending the file.
In the square/okhttp has exactly what you want (PostFile.java), but for what you need, I made some basic changes. I’ll show you:
This is the class that makes everything happen, using Okhttpclient.
public final class MyPostFile{
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
File file = new File(getExternalStorageDirectory().getAbsolutePath() + "/bkp_sqlite.db");
if (file.length() != 0) {
MultipartBody.Builder requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"), file));
MultipartBody multBody = requestBody.build();
Request request = new Request.Builder()
.url("http://api.meusite.com/file")
.post(multBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Log.wtf(PostFile.class.getSimpleName(), response.body().string());
}
}
}
public static void main(String... args) throws Exception {
new PostFile().run();
}
}
See below how to call the MyPostFile:
MyPostFile postFile = new MyPostFile();
try {
postFile.run();
} catch (Exception e) {
e.printStackTrace();
}
To receive the file is used the $_FILES. This feature allows the realization of uploads of text and binary files. At first it is validated if the file is blank: empty($_FILES), and if not, a filename is generated using date and time: date('YmdHis'). See the final code below:
if (empty($_FILES)) { // verifica se existe algum entrada de arquivo
echo 'Erro ao enviar arquivo';
} else {
if (!empty($_FILES['file']) && $_FILES['file']['error'] !== 4) {
if (!$_FILES['file']['error']) {
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = "_".date('YmdHis') . '.' . end($temp);
if (!move_uploaded_file($_FILES['file']['tmp_name'], $newfilename)) {
echo 'There is a error while processing uploaded file';
}
} else {
echo 'Erro ao enviar arquivo';
}
}
}
PS.: For all of this to work properly, you cannot forget the permissions that must be granted on manifest.xml.
Browser other questions tagged php java android okhttp
You are not signed in. Login or sign up in order to post.
Thanks @Ack Lay, it worked for me.
– Emerson Barcellos
@Emersonbarcellos for nothing... need, just call! =)
– viana