首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SwiftUI中获取丢弃文件的文件名?

在SwiftUI中获取丢弃文件的文件名可以通过使用onDrop修饰符来实现。onDrop修饰符可以用于接收拖放操作,并在拖放完成后执行相应的操作。

首先,我们需要在视图中添加一个onDrop修饰符,并指定一个闭包来处理拖放操作。在闭包中,我们可以获取到拖放的项目,并从中提取出文件名。

下面是一个示例代码:

代码语言:txt
复制
struct ContentView: View {
    @State private var droppedFiles: [URL] = []
    
    var body: some View {
        VStack {
            Text("Dropped Files:")
            ForEach(droppedFiles, id: \.self) { fileURL in
                Text(fileURL.lastPathComponent)
            }
        }
        .onDrop(of: ["public.file-url"], isTargeted: nil) { providers -> Bool in
            guard let item = providers.first else { return false }
            guard let fileProvider = item.itemProvider else { return false }
            
            fileProvider.loadItem(forTypeIdentifier: "public.file-url", options: nil) { (urlData, error) in
                if let fileURL = urlData as? URL {
                    DispatchQueue.main.async {
                        droppedFiles.append(fileURL)
                    }
                }
            }
            
            return true
        }
    }
}

在上述代码中,我们创建了一个ContentView视图,并使用@State属性包装了一个数组droppedFiles,用于存储拖放的文件URL。

在视图的body中,我们使用VStack垂直布局,并在其中显示拖放的文件名。使用ForEach循环遍历droppedFiles数组,并使用Text视图显示每个文件的最后一个路径组件。

在视图的onDrop修饰符中,我们指定了接收的数据类型为public.file-url,表示接收文件URL。在闭包中,我们首先检查提供的providers数组是否为空,然后获取第一个提供者的itemProvider。接着,我们使用loadItem(forTypeIdentifier:options:completionHandler:)方法加载文件URL数据,并将其添加到droppedFiles数组中。

这样,当用户拖放文件到视图中时,文件名将被提取并显示在界面上。

推荐的腾讯云相关产品:腾讯云对象存储(COS),它是一种安全、稳定、高效、低成本的云端存储服务,适用于存储和处理大量非结构化数据,如图片、音视频、文档等。您可以通过以下链接了解更多信息:

腾讯云对象存储(COS):https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在 Go 函数获取调用者函数名、文件名、行号...

如果让我们用 Go 设计一个Log Facade,就需要我们自己在门面里获取调用者函数名、文件位置了,那么在Go里面怎么实现这个功能呢?...) Caller 函数会报告当前 Go 程序调用栈所执行函数文件和行号信息。...//获取是 CallerA函数调用者调用栈 pc1, file1, lineNo1, ok1 := runtime.Caller(1) } 函数返回值为调用栈标识符、带路径完整文件名...、该调用在文件行号。...获取调用者函数名 runtime.Caller 返回值第一个返回值是一个调用栈标识,通过它我们能拿到调用栈函数信息 *runtime.Func,再进一步获取到调用者函数名字,这里面会用到函数和方法如下

6.5K20
  • 何在前端下载后端返回文件流时,获取请求头中文件名称?

    前言在前后端分离开发模式下,前端需要从后端获取文件流,以便进行文件下载。同时,前端还需要获取请求头中文件名称,以便为用户提供更加友好下载体验。...本文将介绍如何在前端下载后端返回文件流时,获取请求头中文件名称。2. 获取文件流前端可以通过发送请求方式获取后端返回文件流。...其中,Content-Disposition 实体头字段 filename 子参数用于指定文件名称。...在前端下载文件时,可以通过获取响应头中 Content-Disposition 实体头字段,进而获取文件名称。...总结本文介绍了如何在前端下载后端返回文件流时,获取请求头中文件名称。

    7.6K01

    Excel: 提取路径文件名

    文章背景:在日常工作,有时需要从绝对路径中提取文件名。比如,已知某个文件存储路径,想要获取最后文件名称。下面介绍两种方法。...A2公式,REPT函数将空格复制99次。...A2公式,SUBSTITUTE函数将字符串斜杆\替换成99个空格。...思路分析:针对文件路径,先用99个空格替换掉路径斜杆\;再从字符串右侧起,获取99个字符(新字符串),此时,新字符串内既有文件名,也有空格;最后,通过trim函数,移除首尾空格,从而得到所需要文件名...思路分析:针对文件路径,使用Split函数,基于斜杆/,将路径分割成各个小块,保存在一个数组内;然后通过Ubound函数,获取数组最后一个索引号,从而将文件名提取出来。

    2.6K20

    js获取input上传文件文件名和扩展名方法

    使用 js 可以获取 input 上传文件文件名和扩展名,这里我整理一下具体方法: 1. 使用原生JS获取: CSS代码:给 div 一个内边距,按钮设置样式。...'mybtn');     var div = document.getElementById('div');     mybtn.onclick = function () {         //获取文件上传文件文件名和扩展名...;         } else {             //获取上传文件文件名             div.innerHTML= div.innerHTML+'文件名:' + myfile.files[0].name + '';             //获取上传文件扩展名             var filevalue...声明:本文由w3h5原创,转载请注明出处:《js获取input上传文件文件名和扩展名方法》 https://www.w3h5.com/post/89.html

    13.4K00

    python 获取当前目录下文件目录和文件名实例代码详解

    输出格式为:   当前文件目录路径   当前路径下子文件目录(若存在, 不存在则为 [] )   当前路径下非目录子文件(仅为子文件文件名)     子文件1路径     子文件1下文件目录     ...子文件1下非目录子文件     子文件2路径     子文件2下文件目录     子文件2下非目录子文件 # -*- coding: utf-8 -*- import os def...'.jpeg': L.append(os.path.join(root, file)) return L #其中os.path.splitext()函数将路径拆分为文件名...知识点补充:利用python获取当前目录名称和获取指定目录下子目录和文件名称 import os #获取当前目录名称 print(os.getcwd()) #获取指定目录下子目录和文件名称 path...(root,name)) 到此这篇关于python 获取当前目录下文件目录和文件名实例代码详解文章就介绍到这了,更多相关python获取当前目录文件目录和文件名内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

    5.1K10

    何在 MSBuild 项目文件 csproj 获取绝对路径

    通常我们能够在 csproj 文件仅仅使用相对路径就完成大多数编译任务。但是有些外部命令执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同含义。...本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 ,可以在 csproj 编写调用 PowerShell 脚本代码,于是获取一个路径绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...('$(WalterlvRelativePath)') 具体到 csproj 代码,是这样: 1 2 3 4 5 6 ...你可以阅读我其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件已知属性(知道了这些,就不会随便在 csproj 写死常量啦) - walterlv 如何更精准地设置

    27630

    【DB笔试面试511】如何在Oracle写操作系统文件写日志?

    题目部分 如何在Oracle写操作系统文件写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...image.png 其它常见问题如下表所示: 问题 答案 Oracle哪个包可以获取环境变量值? 可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值。...在CLIENT_INFO列存放程序客户端信息;MODULE列存放主程序名,名称;ACTION列存放程序包过程名。该包不仅提供了设置这些列值过程,还提供了返回这些列值过程。...如何在存储过程暂停指定时间? DBMS_LOCK包SLEEP过程。例如:“DBMS_LOCK.SLEEP(5);”表示暂停5秒。 DBMS_OUTPUT提示缓冲区不够,怎么增加?...如何在Oracle写操作系统文件写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。

    28.8K30
    领券