So herunterladen Sie die Datei auf Android mit PHP Force Download
-
27-10-2019 - |
Frage
Ich erstelle eine Anwendung, dies kann den Dateiformserver herunterladen.
Verwenden Sie diesen Code >>>
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;
}
}
Und ich möchte mit PHP Force -Download verwenden, aber es funktioniert nicht, gewöhnlich mit Dateipfad wie 'App/aaa.apk' es funktioniert! , und ich wechsle in PHP -Datei wie 'PHP/erzwungen.php' nicht funktioniert.
Ich muss mit PHP Force Download verwenden. Wie benutze ich?
ps. Ich habe wenig Englischkenntnisse, denn englische Sprache ist nicht meine Hauptsprache
Danke
Lösung
Ich entdecke für meine Antwort Android-Java-Code __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 -Datei __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;
}
Dies ist kurzer Code, sorry, wenn nicht ausgeführt werden kann. :)
Andere Tipps
Dies ist vielleicht nicht der beste Weg, dies zu tun, aber haben Sie darüber nachgedacht, die Datei beim erfolgreichen Herunterladen umzubenennen? Ich habe es nicht ausprobiert, aber ich glaube, Sie können es mit dem tun File.renameTo()
Methode in Android.
Hier ist ein Pseudo -Code, von dem ich denke, dass er es jetzt nicht ausprobieren kann:
File.renameTo(new File(FILE_PATH, filename.replace(".apk", ".php")));