2015-05-11 2 views
0

Я пишу простой фрагмент, чтобы загрузить файл с локального сервера.Получить имя файла при загрузке с файлом DownloadManager

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(); 
} 

URL-адрес веб-службы выглядит следующим образом - http://localhost:8080/NFZ_WS/rest/hello/geojson

Итак, мой вопрос заключается в том, чтобы получить имя файла, а enqueuing в URI. Скажите, пожалуйста, нужно ли мне редактировать веб-сервис.

+0

Извините, но если вы попросите загрузить файл, то вы уже знаете название этого файла, о котором я думаю. Пожалуйста, дополните. – greenapps

+0

Пожалуйста, расскажите, как выглядит используемый URL. Имя файла в заголовке? Название чего? – greenapps

+0

@greenapps: URL-адрес выглядит так: http: // localhost: 8080/NFZ_WS/rest/hello/geojson'. Я не получаю имя файла из url. –

ответ

-1

Ваш DownloadManager в настоящее время заботится о вас «GET», вам не нужно делать это явно, если вы не используете классы HttpGet, HttpClient. И вот link to implement a HEAD statement, чтобы получить имя файла, загружаемого с веб-службы.