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

War es hilfreich?

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")));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top