如何从Android的web视图动态URL下载PDF格式 [英] how to download pdf from dynamic url in android webview
本文介绍了如何从Android的web视图动态URL下载PDF格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
的URL PDF格式的服务器上如下:
The URL to the pdf on the server is as follows:
https://xyz.abc。 COM / QWER / leterpdf键= 43,1和放大器;的AppId = 9520&安培; usecaseID = 195
不带.pdf扩展名结尾。如何在应用程序下载这个android系统中的WebView?
Not ending with .pdf extension. How do I download this in android WebView in app?
推荐答案
根据您所使用的服务器端的技术,你可以下载一个文件,迫使它传递适当的头。
就像我用我的情况和安培PHP;像这样做 -
Depending on the technology you are using on server side, you can download a file forcing it passing appropriate headers. Like i am using PHP in my case & do it like this-
$filepath = "pdfs/android.pdf";
$length = filesize($filepath);
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="android.pdf"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header("Content-Length: ".$length);
下载监听器 -
Download Listener-
w.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
String fileName,cookie;
try {
fileName = contentDisposition.replace("inline; filename=", "");
fileName = fileName.replaceAll("\"", "");
downloadFileAsync(url, fileName);
}catch (Exception e){
}
}
});
下载code -
Download Code-
private void downloadFileAsync(String url, String filename){
new AsyncTask<String, Void, String>() {
String SDCard;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection urlConnection = null;
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
int lengthOfFile = urlConnection.getContentLength();
SDCard = Environment.getExternalStorageDirectory() + File.separator + "downloads";
int k = 0;
boolean file_exists;
String finalValue = params[1];
do {
if (k > 0) {
if (params[1].length() > 0) {
String s = params[1].substring(0, params[1].lastIndexOf("."));
String extension = params[1].replace(s, "");
finalValue = s + "(" + k + ")" + extension;
} else {
String fileName = params[0].substring(params[0].lastIndexOf('/') + 1);
String s = fileName.substring(0, fileName.lastIndexOf("."));
String extension = fileName.replace(s, "");
finalValue = s + "(" + k + ")" + extension;
}
}
File fileIn = new File(SDCard, finalValue);
file_exists = fileIn.exists();
k++;
} while (file_exists);
File file = new File(SDCard, finalValue);
FileOutputStream fileOutput = null;
fileOutput = new FileOutputStream(file, true);
InputStream inputStream = null;
inputStream = urlConnection.getInputStream();
byte[] buffer = new byte[1024];
int count;
long total = 0;
while ((count = inputStream.read(buffer)) != -1) {
total += count;
//publishProgress(""+(int)((total*100)/lengthOfFile));
fileOutput.write(buffer, 0, count);
}
fileOutput.flush();
fileOutput.close();
inputStream.close();
}catch (MalformedURLException e){
Log.d(AppConfig.APP_TAG, e.getMessage());
} catch (ProtocolException e){
Log.d(AppConfig.APP_TAG, e.getMessage());
} catch (FileNotFoundException e){
Log.d(AppConfig.APP_TAG, e.getMessage());
} catch (IOException e){
Log.d(AppConfig.APP_TAG, e.getMessage());
} catch (Exception e){
Log.d(AppConfig.APP_TAG, e.getMessage());
}
return params[1];
}
@Override
protected void onPostExecute(final String result) {
}
}.execute(url, filename);
}
这篇关于如何从Android的web视图动态URL下载PDF格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文