Question

Je fais une demande, cela peut télécharger le serveur sous forme de fichier.

utilisez ce 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;
}

}

et je veux utiliser avec PHP télécharger la force, mais il pas de travail, ordinaire, il utilise avec le chemin de fichier comme « app / aaa.apk » ça marche! , Et je le changement de fichier PHP comme 'php / forcedl.php' il fonctionne pas.

Je doit utiliser la force télécharger php, Comment puis-je utiliser?

ps. J'ai peu de compétences en langue anglaise, parce que la langue anglaise est pas ma langue principale

Merci

Était-ce utile?

La solution

Je découvre ma réponse android-code 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();
            }

fichier 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;
     }

ce code est court, désolé si ne peut pas exécuter. :)

Autres conseils

Ceci est peut-être pas la meilleure façon de le faire, mais vous avez considéré renommer le fichier sur le téléchargement avec succès? Je ne l'ai pas essayé, mais je crois que vous pouvez le faire en utilisant la méthode File.renameTo() dans Android.

Voici un code pseudo que je pense que fonctionne, ne peut pas l'essayer en ce moment même:

File.renameTo(new File(FILE_PATH, filename.replace(".apk", ".php")));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top