我使用 Windows 10 的 Linux 子系统(Windows 10 版本 1803)
我可以使用命令行:
user@laptop:~$ wslpath -w /c/
C:\
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用
user@laptop:~$ wslpath -w ~
wslpath: /home/user: Result not representable
Run Code Online (Sandbox Code Playgroud)
即使我使用:
user@laptop:~$ wslpath -w /home/user
wslpath: /home/user: Result not representable
Run Code Online (Sandbox Code Playgroud)
为什么?如何将 /home/user 转换为 windows 路径?
我在 Windows 中的主文件夹路径是 C:\Users\winuser\AppData\Local\lxss\home
我希望一些命令行可以让我返回那个字符串。
如果路径是../b并且当前目录是/var/www/a/c,那么 realpath 将是/var/www/a/b
但如果b不存在,则 realpath() 返回 false。
即使目录尚不存在,是否有可能获得相同的路径?
我正在使用文件选择器库。
权限代码:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R || Environment.isExternalStorageManager()) {
//Toast.makeText(this, "We can access all files on external storage now", Toast.LENGTH_SHORT).show()
} else {
Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivityForResult(intent, FILE_REQUEST_CODE);
}
Run Code Online (Sandbox Code Playgroud)
选择文件:
Intent intent = new Intent(this, FilePickerActivity.class);
intent.putExtra(FilePickerActivity.CONFIGS, new Configurations.Builder()
.setCheckPermission(true)
.setSelectedMediaFiles(mediaFiles)
.setShowFiles(true)
.setShowImages(false)
.setShowAudios(false)
.setShowVideos(false)
.setIgnoreNoMedia(false)
.enableVideoCapture(false)
.enableImageCapture(false)
.setIgnoreHiddenFile(false)
.setMaxSelection(5)
.setSuffixes("pdf", "doc", "docx")
//.setTitle("Select a file")
.build());
startActivityForResult(intent, FILE_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
onActivityResult:
if (requestCode == FILE_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
//ArrayList<MediaFile> files …Run Code Online (Sandbox Code Playgroud) 我收到了其他人的系统代码,该系统在浏览器中显示带有照片的文件夹.
例如,这是网站上可能的网址:
gallery.php?action=view&folder=Cars
Run Code Online (Sandbox Code Playgroud)
目前,您可以用../../../../../替换"Cars",这将很乐意显示Linux根文件夹.幸运的是,该网站目前处于离线状态.
我尝试使用realpath来解决这个问题.这是我到目前为止所拥有的:
case 'view' :
$name = realpath(dirname(__FILE__) . "/Content/Gallery/" . $_GET['folder']);
echo $name;
$data = $file->getPictures($name);
require 'Views/Gallery.view.php';
break;
Run Code Online (Sandbox Code Playgroud)
我在第三行添加了echo以查看URL是什么.在上面的url中,一切都很好,echo输出:
/var/www/Content/Gallery/Cars
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,如果我输入/../../../../../../../../而不是"Cars",$ name变为/并且页面仍显示根文件夹.英语不是我的第一语言,所以我可能误解了真实路径的工作方式或工作原理.根据我的理解,它从给定的URL中删除../的任何实例.
有人可以告诉我我做错了什么吗?