파일의 실제 경로를 가져옵니다


11

Drupal 8에서 Excel 읽기 모듈을 만들고 있습니다. public : //2016-03/Places.xls와 같은 경로에서 파일을 읽을 수있는 실제 파일 경로를 가져오고 싶습니다.

파일의 실제 경로를 얻기 위해 어떤 기능을 호출해야합니까?



4
무엇을 읽었습니까? 그 경로는 거의 모든 것에서 작동합니다. 예를 들어 file_get_contents ( 'public : // ...')은 잘 작동합니다.
Berdir

1
`:> realpath ( '//2016-03/Places_2.xlsx 공개') - 나는`\ 드루팔 :: 서비스 ( 'file_system을')입니다 드루팔 (8)의 측면에서 대답을 얻었다
NISAM

1
응답으로 게시하고 솔루션으로 수락하십시오. 그것은 같은 질문을 가진 다른 사람들을 도울 것입니다.
Aram Boyajyan

1
나는 비슷한 상황을했지만, 함께가는 결국 file_create_url 처리 할 수 있기 때문에 managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))shipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

답변:


16

마지막으로 Drupal 코드를 파서 솔루션을 얻었습니다. file_system 서비스
를 사용하여 실제 경로 또는 절대 경로를 얻을 수 있습니다 .

$absolute_path = \Drupal::service('file_system')->realpath('public://2016-03/Places_2.xlsx');

4
Drupal을 통해 파일을 업로드 할 수 있습니까? 외부에서 호스팅되면 어떻게됩니까? The use of this method is discouraged, because it does not work for remote URIs. Except in rare cases, URIs should not be manually resolved.대한 documention 언급 파일 시스템 :: realpath을
usernameabc

13

@Nisam 대답은 옳았지만 이제는 더 이상 사용되지 않습니다 : 함수 drupal_realpath

더 이상 사용되지 않음

Drupal 8.0.x-dev에서는 Drupal 9.0.0 이전에 제거됩니다. \ Drupal \ Core \ File \ FileSystem :: realpath ()를 사용하십시오.

따라서 FileSystem :: realpath 를 사용해야합니다 .

예:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.