PHPフォースダウンロードでAndroidでファイルをダウンロードする方法
-
27-10-2019 - |
質問
アプリケーションを作成します。これにより、ファイルフォームサーバーをダウンロードできます。
このコードを使用>>>
public int startDownload(String url, String filename) {
// create url connector
URL u;
byte[] buffer = new byte[1024];
try {
u = new URL(url + filename);
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
InputStream in = c.getInputStream();
m_lMaxDownloadSz = c.getContentLength();
FileOutputStream f = new FileOutputStream(new File(FILE_PATH, filename));
m_bCancelDownload = false;
m_lCurrentDownloadSz = 0;
int len = 0;
while ((len = in.read(buffer, 0, 1024)) > 0) {
// if download is canceled.
if (m_bCancelDownload) {
f.close();
c.disconnect();
return FILE_DOWNLOAD_CANCELED;
}
if (knot++ >= PROGRESS_STEP) {
knot = 0;
myProgressDialog.setProgress(GetDownloadStatus());
}
f.write(buffer, 0, len);
m_lCurrentDownloadSz += len;
}
f.close();
c.disconnect();
} catch (Exception e) {
return FILE_DOWNLOAD_FAILED;
}
if (GetDownloadStatus() == 100) {
return FILE_DOWNLOAD_FINISHED;
} else {
return FILE_DOWNLOAD_FAILED;
}
}
PHP Forceのダウンロードで使用したいのですが、機能しません。「App/AAA.apk」などのファイルパスで使用します。 、そして、「php/forcedl.php」のようなphpファイルに変更します。
PHPフォースのダウンロードで使用する必要がありますが、どのように使用できますか?
詩私は英語のスキルがほとんどありません。
ありがとうございました
解決
私は私の回答のためにAndroid-Javaコード__exampleを発見します:
byte[] buffer = new byte[1024];
String url = "http://www.bla-bla.com/forcedownload.php"
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
filesize = execute.getEntity().getContentLength();
fileOutput = new FileOutputStream(new File(FILE_PATH, "file_copyformserver.apk"));
while ((len = content.read(buffer, 0, 1024)) > 0) {
fileOutput.write(buffer, 0, len);
Thread.sleep(100);
}
fileOutput.close();
} catch (Exception e) {
e.printStackTrace();
}
phpファイル__example:
$file = '/home/bla-bla/domains/bla-bla.com/file/file.apk'; //not public folder
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
これは短いコードです。実行できない場合は申し訳ありません。 :)
他のヒント
これはおそらくそれを行うための最良の方法ではありませんが、それを正常にダウンロードするとファイルの名前を変更することを検討しましたか?私はそれを試したことはありませんが、あなたはそれを使ってそれをすることができると信じています File.renameTo()
Androidのメソッド。
ここに私がうまくいくと思ういくつかの擬似コードがあります、しかし今それを試すことはできません:しかし:
File.renameTo(new File(FILE_PATH, filename.replace(".apk", ".php")));
所属していません StackOverflow