Tôi nhận được câu trả lời nhờ Raghunandan đề xuất.
Ở đây tôi cần phải gọi thêm để nhận thông tin tiêu đề của tệp tải xuống. Trong phần tiêu đề, tôi đã nhận được tên của tập tin.
Tôi cũng tìm thấy bài đăng này Filename from URL not containing filename suffix thông qua đó tôi có thêm chi tiết về chi tiết tiêu đề mà chúng tôi có thể nhận được khi yêu cầu.
Như chúng ta có thể sử dụng URLUtil.guessFileName(url, null, null)
này nhưng điều này sẽ được đặt tên tập tin gọi phương tiện đối với trường hợp của tôi, tôi có url như thế này
misc/dnload.php?t1=MzQ0MDA=&t2=MTY5NTUz&t3=MTY5NTUzMTMwMjEyMDNfcGhhcm1hY3kga2V5IGluZm8ucG5n&t4=MTMwMjEyMDM=
như vậy từ liên kết ở trên này sẽ trích xuất các dnload.php như tên tệp không phải là tên tệp gốc mà chúng tôi tải xuống nó vừa tạo liên kết tải xuống cho tệp đó.
đây là mã sử dụng điều này chúng tôi có thể lấy tên tệp chỉ là một cuộc gọi bổ sung để nhận thông tin nhưng thực sự chúng tôi tải xuống, để tải xuống, tôi đã sử dụng api sẵn có android để DownloadManager tải xuống tệp.
Content-Disposition this is the attribute in header section through which we can get the file name as in attachment form.
Nó sẽ sẽ trở lại thông tin như cách này Content-Disposition: attachment; filename="fname.ext"
vì vậy bây giờ chỉ cần trích xuất tên file
class GetFileInfo extends AsyncTask<String, Integer, String>
{
protected String doInBackground(String... urls)
{
URL url;
String filename = null;
try {
url = new URL(urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
conn.setInstanceFollowRedirects(false);
String depo = conn.getHeaderField("Content-Disposition");
String depoSplit[] = depo.split("filename=");
filename = depoSplit[1].replace("filename=", "").replace("\"", "").trim();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
}
return filename;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute();
// use result as file name
}
}
để bạn thực hiện một yêu cầu http để tải về các tập tin. Nếu vậy thì bạn có thể lấy tên tệp từ nội dung tiêu đề. – Raghunandan