我正在编写一个简单的代码段来从本地服务器下载文件。
Uri uri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(uri);
String filePath= null;
filePath = getApplicationContext().getFilesDir().getAbsolutePath();
filePath = this.getFilesDir().getAbsolutePath();
HERE-----**//request.setDescription("Downloading GeoJSON").setTitle("filename");**
//request.setDestinationUri(Uri.parse(filePath));
request.setDestinationInExternalPublicDir("Folder", "files");
request.setVisibleInDownloadsUi(true);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setMimeType("application/octet-stream");
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
downloadReference = downloadManager.enqueue(request);
我想在标题中设置文件名,我也想保存具有相同文件名的文件。
我知道我们可以在BroadcastReceiver
中提取文件名,但只有在下载完成后才会收到广播。
以下是网络服务的代码 -
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("/geojson2")
public Response getFile() {
File file = new File(GEOJSON_FILE_PATH);
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=" + file.getName()) //optional
.header("Content-Length", file.length()+"")
.build();
}
Web服务URL如下所示 -
http://localhost:8080/NFZ_WS/rest/hello/geojson
所以,我的问题是如何在排队URI时获取文件名。如果我需要编辑网络服务,请告诉我。
答案 0 :(得分:-1)
您的DownloadManager目前为您处理“GET”,除非您使用的是HttpGet,HttpClient类,否则您不必明确地执行此操作。这里有一个link to implement a HEAD statement来获取从Web服务下载的文件的名称。