技术领域
[0001] 本申请涉及计算机技术领域,尤其涉及一种基于鸿蒙系统的FTP文件下载方法、装置及存储介质。
相关背景技术
[0002] 在当今数字化时代,操作系统作为连接用户与设备的核心纽带,其功能的丰富程度与完善性至关重要。鸿蒙系统作为一款新兴的操作系统,凭借其丰富的API和开发工具,以及对多种网络通信协议的支持,为开发者打造了一个高效的应用开发环境,助力各类创新应用的诞生。然而,在网络文件传输这一关键领域,鸿蒙系统目前尚未提供直接的FTP支持,官方也未推出专门的FTP相关API接口。这使得开发者在实现FTP文件下载功能时,无法借助系统自带资源,与之形成鲜明对比的是安卓系统,其成熟的生态和开放能力孕育了如Apache Commons Net等广泛应用且经过充分验证的第三方FTP库,能够稳定地满足FTP操作需求。但鸿蒙系统由于缺乏对FTP协议的直接支持,加之第三方FTP库的兼容性存在不确定性,在一定程度上限制了鸿蒙平台上FTP文件下载功能的实现,需要投入额外的时间和精力进行适配工作。
具体实施方式
[0041] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0042] 本申请提供了一种基于鸿蒙系统的FTP文件下载方法。下述实施例以该方法应用于具备鸿蒙系统的计算机设备为例进行说明,可以理解,计算机设备可以是各种具备数据处理功能的设备,可以但不限于单个服务器、服务器集群、个人笔记本电脑、台式电脑等。其中,该方法可以是计算机设备上的客户端应用对FTP服务器进行交互。如图1所示,该方法可以包括以下步骤:
[0043] S101:在鸿蒙系统的沙箱中,响应于FTP同步请求,从FTP同步请求中获取FTP服务器的登录信息,并采用登录信息登录FTP服务器。
[0044] 其中,鸿蒙系统的沙箱是一种虚拟化的隔离环境,用于运行和管理应用程序,确保应用程序在安全的隔离空间内执行,从而避免影响系统的其他部分,增强操作系统的安全性与稳定性。FTP同步请求是客户端发出的请求,要求与FTP服务器建立连接,并执行文件传输操作,通常包括FTP服务器登录信息、目标文件目录、数据传输方式等细节。FTP服务器的登录信息指的是FTP服务器要求客户端提供的身份验证信息,通常包括用户名和密码,以确保只有经过授权的用户可以访问FTP服务器中的资源。FTP服务器是用于存储和管理文件的服务器,允许通过FTP协议进行文件的上传、下载、删除等操作。
[0045] 本步骤中,首先,响应来自客户端的FTP同步请求。当客户端发起请求时,接收到请求信号并根据请求的内容进行相应的处理,确保后续步骤能够顺利进行。接着,从请求中获取FTP服务器的登录信息,可以包括用户名和密码,确保成功连接并与FTP服务器进行交互,将这些信息提取出来,是准备用于身份验证和连接建立。随后,利用获取的登录信息登录FTP服务器,可以是通过向FTP服务器发送用户名和密码,等待FTP服务器验证信息的返回,若验证成功,则与FTP服务器之间的连接得以建立,并为后续的数据传输做好准备。
[0046] 可以理解,在鸿蒙系统的沙箱中,响应FTP同步请求并获取FTP服务器的登录信息,能够确保鸿蒙系统与FTP服务器之间的正确通信。通过沙箱机制,鸿蒙系统对应用程序进行隔离,限制了应用对系统资源和文件的访问权限。这样,只有在应用被明确授权的情况下,才可以获取FTP服务器的登录信息,并在沙箱内完成登录操作。这种隔离机制有效避免了应用在未经授权的情况下访问敏感数据,降低了潜在的安全风险。
[0047] 通过正确提取并使用这些登录信息进行身份验证,能够成功登录FTP服务器并与之建立连接,从而实现安全且有效的文件传输。由于沙箱提供了额外的安全保护,鸿蒙系统能够在确保数据隐私的同时,提供更为稳定和受控的通信通道。沙箱不仅保护了鸿蒙系统本身免受恶意应用程序的侵害,还确保了文件传输过程中的数据不被非法篡改或泄露。因此,这种方式能够避免非法访问的风险,同时为后续的数据传输操作提供了可靠的基础。
[0048] S102:当成功登录FTP服务器时,指示FTP服务器切换至二进制模式后,根据获取到的目标文件目录,指示FTP服务器进入目标文件目录,以及接收FTP服务器返回的目标文件的下载地址和下载端口号。
[0049] 其中,二进制模式是FTP协议中的一种数据传输模式,适用于传输非文本文件,如图片、视频、音频等。二进制模式能够确保文件在传输过程中不被修改或丢失任何数据。目标文件目录是指FTP服务器中存储目标文件的具体路径。在文件下载过程中,需要指示FTP服务器进入该目录,以便查找并传输指定的文件。下载地址是FTP服务器返回的一个资源位置标识,用于指示目标文件在FTP服务器上的确切位置或URL,依据该地址可以向FTP服务器请求文件的具体数据。下载端口号是FTP服务器提供的一个网络端口号,用于建立数据传输连接。通过这个端口,可以与FTP服务器进行数据交换,完成文件的下载。
[0050] 本步骤中,首先,当成功登录到FTP服务器后,必须确保文件传输不会发生数据格式错误或内容丢失,尤其是对于非文本文件。因此,要求FTP服务器进入二进制模式,例如可以通过发送“TYPE I”命令,以保证文件在传输过程中保持原始数据不变。接下来,因为文件存储在特定的目录下,若没有切换到正确的目录,就无法找到目标文件。在一个示例中,可以通过发送“CWD”命令,告诉FTP服务器跳转到包含目标文件的目录,确保文件路径的准确性。随后,FTP服务器在收到指令后,会根据目标文件的实际存储位置提供相应的下载地址,并且指示应该通过哪个端口与FTP服务器进行数据传输。如此,能够确保与FTP服务器的稳定连接和文件传输的高效进行,避免因格式不匹配或目录错误导致的文件传输失败,从而提高了整个文件下载过程的可靠性与效率。
[0051] 可以理解,首先,指示FTP服务器切换至二进制模式确保了文件数据的完整性,避免了在传输过程中发生数据损坏或丢失。接着,通过向FTP服务器指示进入目标文件目录,能够准确定位存储文件的路径。最后,通过接收FTP服务器返回的下载地址和端口号,能够准确建立数据传输连接,确保文件能够高效、稳定地从FTP服务器下载至本地。
[0052] S103:根据下载地址和下载端口号,与FTP服务器建立数据传输连接,并通过鸿蒙系统的worker多线程下载目标文件,当目标文件下载完成时,关闭数据传输连接。
[0053] 其中,数据传输连接是指和FTP服务器之间建立的网络连接,通过该连接进行文件的实际传输,包括上传、下载或删除文件。worker多线程是鸿蒙系统中支持并行处理任务的机制,使用多个线程同时执行多个操作,以提高任务处理效率。在文件下载场景中,worker多线程技术可以将下载任务分解到多个线程中,从而加速文件的下载过程。
[0054] 本步骤中,在获取下载地址和端口号后,下一步是建立数据传输连接。可以通过客户端向FTP服务器发起请求,并使用指定的端口号与FTP服务器进行连接。示例如使用套接字连接到FTP服务器的下载端口,建立数据流通道,从而能够从FTP服务器获取文件数据。文件下载过程中,利用鸿蒙系统的worker多线程技术将下载任务分配给多个线程,每个线程负责下载文件的一部分。通过并行执行,多个线程可以同时工作,从而加速整体文件的下载过程。当文件下载完成后,为了释放资源并终止与FTP服务器的连接,可以发送命令关闭数据传输连接。示例如通过发送“QUIT”或类似的命令来结束会话,确保连接被正确关闭,防止资源浪费。
[0055] 可以理解,首先,建立数据传输连接是确保文件可以从FTP服务器下载的前提。通过鸿蒙系统的网络通信框架,利用指定的下载地址和端口号与FTP服务器建立稳定的数据连接,能够确保文件传输的可靠性。鸿蒙系统的网络栈和连接管理机制为这一过程提供了高效的支持,同时,沙箱技术确保数据交换过程中,应用只能访问其被授权的网络资源,从而保证了连接的安全性。
[0056] 接下来,借助鸿蒙系统的worker多线程技术,可以同时启动多个线程来并行下载目标文件。鸿蒙系统支持多任务并行处理,充分利用系统的多核处理能力,提高了数据传输效率。在网络带宽足够的情况下,多个线程的并行下载能够大大提高下载速度,减少等待时间。鸿蒙系统的高效调度机制确保了每个线程的资源分配和执行顺畅,使得整个文件下载过程更加流畅和高效。
[0057] 最后,在文件下载完成后,通过关闭数据传输连接,能够释放占用的网络和系统资源,避免长时间保持连接导致不必要的资源浪费。鸿蒙系统的资源管理机制会在关闭连接时自动清理相关的网络和内存资源,从而确保系统资源得到合理利用,避免系统过载。这不仅提高了文件下载的稳定性和效率,也确保了系统的高效运行和长时间的稳定性。
[0058] 在上述实施例中,通过在鸿蒙系统沙箱中响应FTP同步请求,成功获取并使用FTP服务器的登录信息进行登录,接着切换至二进制模式,获取目标文件的下载地址和端口,并建立数据传输连接。利用鸿蒙系统的worker多线程技术进行文件下载,下载完成后关闭连接。该方法解决了鸿蒙系统缺乏直接FTP支持的问题,提供了一种稳定的FTP文件下载解决方案,有效实现了FTP文件的高效传输,增强了鸿蒙系统在文件传输领域的功能与兼容性。
[0059] 在一个实施例中,登录信息包括FTP服务器IP地址、FTP服务器端口号、用户名及其对应的密码;采用登录信息登录FTP服务器的步骤,包括:
[0060] 根据FTP服务器IP地址和FTP服务器端口号,向FTP服务器发起连接请求;
[0061] 当确定与FTP服务器连接成功时,根据用户名,向FTP服务器发起用户名请求,以使FTP服务器对用户名进行验证;
[0062] 当确定用户名验证通过时,根据用户名对应的密码,向FTP服务器发起密码请求,以使FTP服务器对密码进行验证,并当确定密码验证通过时,确认登录FTP服务器。
[0063] 其中,FTP服务器IP地址是FTP服务器在网络中的唯一标识符,用于指定客户端与服务器进行通信时目标设备的位置。FTP服务器端口号是FTP服务监听和接收连接请求的网络端口,通常FTP默认使用端口21用于控制连接。用户名是在FTP服务器上注册的标识符,用于标识用户身份。每个FTP账户都有唯一的用户名。密码是与用户名配套使用的验证信息,用于确保只有经过授权的用户才能访问FTP服务器上的资源。连接请求是向FTP服务器发出的建立网络连接的请求,通常包含FTP服务器的IP地址和端口号,用于指定与FTP服务器通信的目标。用户名请求是向FTP服务器发送的请求,用于告知FTP服务器即将提供的用户名,FTP服务器随后会验证用户名的合法性。密码请求是客户端向FTP服务器发送的请求,提供用户名对应的密码,FTP服务器会验证密码是否正确,决定是否授权访问。
[0064] 具体而言,首先需要向FTP服务器发送连接请求,通过指定服务器的IP地址和端口号,利用TCP/IP协议尝试与FTP服务器建立连接。当发送包含FTP服务器IP和端口信息的请求时,FTP服务器接收到此请求并等待响应。连接请求成功后,会与FTP服务器建立一个可用的数据传输通道。连接成功后,需要向FTP服务器发送包含用户名的请求,此请求用于告知FTP服务器将要提供的用户名信息。FTP服务器收到用户名请求后,会根据其存储的用户数据进行验证,检查该用户名是否存在并有效。在用户名验证成功后,将向FTP服务器发送与该用户名对应的密码,FTP服务器通过与存储在其数据库中的密码进行匹配,验证密码的正确性。当FTP服务器验证用户名和密码均正确后,确认登录成功,意味着FTP服务器授权客户端访问其资源,双方可以开始进行后续的数据交互。
[0065] 本实施例中,向FTP服务器发起连接请求确保能够正确地找到并连接到FTP服务器。接下来的用户名和密码验证过程,则是为了保护FTP服务器资源,防止未经授权的访问。通过向FTP服务器依次发送用户名和密码请求,逐步确认客户端的身份,只有用户名和密码均通过验证后,才能获得访问权限。如此,保证了文件传输操作的安全性和准确性,避免了非法用户的侵入,同时确保只有正确的身份验证信息才能通过,避免了数据泄露的风险。
[0066] 在一个实施例中,指示FTP服务器切换至二进制模式后,根据获取到的目标文件目录,指示FTP服务器进入目标文件目录,以及接收FTP服务器返回的目标文件的下载地址和下载端口号的步骤,包括:
[0067] 向FTP服务器发起二进制文件类型请求,以使FTP服务器切换至二进制模式;
[0068] 当确定FTP服务器切换至二进制模式时,根据获取到的目标文件目录,向FTP服务器发起切换工作目录请求,以使FTP服务器切换至目标文件目录;
[0069] 当确定FTP服务器进入目标文件目录时,向FTP服务器发起被动模式请求,并接收FTP服务器返回的目标文件的下载地址和下载端口号。
[0070] 其中,二进制文件类型请求是通过FTP协议向FTP服务器发送的命令,要求FTP服务器使用二进制模式来传输文件。二进制模式确保文件数据在传输过程中不会发生任何变化,适用于所有类型的文件。切换工作目录请求是通过FTP协议向FTP服务器发送的命令,要求FTP服务器切换到目标文件所在的目录。被动模式请求是指要求FTP服务器进入被动模式,这时FTP服务器不会主动打开数据连接,而是告诉客户端一个可用的端口,客户端随后使用该端口发起连接,用于文件数据传输。
[0071] 具体而言,首先需要通知FTP服务器,指定数据传输的格式。在FTP协议中,可以通过发送“TYPE I”命令来请求FTP服务器切换到二进制模式。FTP服务器在接收到该请求后,会确认切换到二进制模式,以保证文件数据以原始形式传输。当准备好下载目标文件时,根据获取的目标文件路径指示FTP服务器切换到目标文件所在的目录,例如,可以向FTP服务器发送“CWD”命令。只有进入正确的工作目录,FTP服务器才能找到并准备下载指定的文件。在文件传输过程中,要求服务器切换到被动模式,例如,向FTP服务器发送PASV命令。在被动模式下,FTP服务器会在特定的端口上等待客户端的连接,客户端通过该端口建立数据传输连接。FTP服务器在进入被动模式后,会返回给客户端一个端口号,以及目标文件的下载地址。客户端使用该地址和端口号来与FTP服务器建立数据连接,进行文件的实际下载。
[0072] 本实施例中,首先,通过发起二进制文件类型请求并切换到二进制模式,确保了所有文件在传输过程中不会被转换或损坏,适应了不同文件类型的需求。接下来,切换工作目录请求确保了FTP服务器准确定位到目标文件目录,为后续的文件下载做准备。随后,发起被动模式请求从而能够控制数据传输连接的建立,避免了FTP服务器主动建立连接时可能出现的防火墙和端口冲突问题。最后,接收下载地址和端口号则使客户端能够通过指定的端口与FTP服务器建立稳定的数据传输连接,完成文件的高效下载。
[0073] 在一个实施例中,根据下载地址和下载端口号,与FTP服务器建立数据传输连接的步骤之后,还包括:
[0074] 根据目标文件的文件信息生成权限请求框,以向用户请求文件下载权限;
[0075] 当获得授权时,若确定目标文件的文件信息存在敏感信息,则对敏感信息进行匿名化处理。
[0076] 其中,目标文件的文件信息指的是文件的元数据,包括文件的名称、大小、类型、创建时间、修改时间等,以及可能涉及的敏感信息,如个人数据、企业数据等。权限请求框是一个用户界面元素,用于向用户请求文件下载权限。在鸿蒙系统中,通常是一个弹出框,包含文件信息及授权按钮,用户需要选择是否允许文件下载。敏感信息是指文件中可能包含的需要保护的内容,如个人身份信息、支付信息、商业机密等。匿名化处理是指将敏感信息中的可识别部分替换或隐藏,使得数据不再能够指向特定个体或实体。该处理可以包括去除、替换、加密等操作,确保隐私和数据安全。
[0077] 具体而言,在用户尝试下载目标文件时,根据文件信息生成一个权限请求框,该请求框包含了文件的基本信息,如文件名、大小、类型等,并提示用户该文件可能含有敏感信息,要求用户确认是否允许下载。鸿蒙系统可以通过调用UI组件生成该请求框,并通过沙箱机制限制应用访问文件的直接权限,确保用户同意后才会授予访问权限。当用户查看文件信息并决定是否允许下载时,可以通过点击“同意”或“拒绝”按钮来授权或拒绝下载权限。
[0078] 如果用户选择授权,将继续执行文件下载过程。该授权操作在鸿蒙系统中通常是通过触发系统权限管理服务来进行控制,确保应用只有在获得用户明确授权后才能进行敏感操作。在文件下载之前,需要对文件信息进行检查,判断是否包含敏感信息。可以通过内容扫描或预设规则进行,如匹配某些数据模式或关键字,确保文件在下载过程中不违反隐私保护政策。如果文件信息中包含敏感信息,会在下载前进行匿名化处理。例如,根据文件类型和敏感信息的种类,可以对个人信息进行加密或替换,确保在数据传输过程中不会泄露用户隐私。鸿蒙系统通过沙箱机制确保只有经过用户授权的应用才能进行这些敏感信息的处理。
[0079] 本实施例中,首先,通过生成权限请求框,确保用户在文件下载前明确知情,并作出授权决策,防止应用未经授权访问用户数据或进行不当操作。接下来,检测文件中的敏感信息并进行匿名化处理,确保即使下载过程中出现数据泄漏,也不会暴露用户的隐私信息。匿名化处理通过对敏感信息进行有效遮蔽,降低了信息泄露的风险,保护了用户和企业的敏感数据不被滥用。在鸿蒙系统的沙箱环境中,这些操作受到严格的权限限制,只有经过用户授权的应用才能执行这些敏感操作,从而保障了系统的安全性和数据隐私。
[0080] 在一个实施例中,通过鸿蒙系统的worker多线程下载目标文件的步骤,包括:
[0081] 在鸿蒙系统中创建用于管理下载队列的worker多线程,下载队列中包含目标文件的文件列表;
[0082] 在worker多线程中,采用轮询机制下载目标文件。
[0083] 其中,下载队列是一个数据结构,其中存储了需要下载的目标文件的列表。每个文件都有其对应的下载任务,队列按照一定的顺序排列,负责管理和控制文件的下载流程。轮询机制是指按顺序遍历下载队列中的目标文件,每次取出一个文件进行处理,直到队列中的所有文件都被处理完成。
[0084] 具体而言,在鸿蒙系统中,可以通过多任务处理模块创建多个线程,每个线程用于下载队列中的一个目标文件。创建时,可以分配给每个线程独立的执行环境,确保它们能够并行运行而不相互干扰。下载队列作为一个队列数据结构,可以通过鸿蒙系统内部的队列管理模块来维护。队列中保存了所有待下载的目标文件,并按照一定的规则进行排队。管理队列时,可以添加、删除或查询队列中的元素,即待下载文件,并通过调度算法确保每个文件的下载任务得到执行。
[0085] 在worker线程中,轮询机制被用于顺序访问下载队列中的目标文件。每个worker线程会从队列中取出下一个文件,并执行下载操作。在下载完成后,worker线程会继续处理下一个文件,直到队列中的所有文件都被下载完成。轮询机制确保了文件下载的顺序性,并避免了线程间的资源竞争。
[0086] 本实施例中,通过在鸿蒙系统中创建worker多线程并管理下载队列,能够有效提升文件下载任务的并发能力和处理效率。首先,worker多线程能够同时处理多个下载任务,减少了下载过程中的等待时间,提高了文件下载的总速度。通过将下载队列中的文件分配到不同的线程,鸿蒙系统能够最大程度地利用多核处理器的计算能力,确保下载任务的并行执行。其次,采用轮询机制下载文件可以确保每个文件都得到均衡的处理。轮询机制按照顺序处理文件,避免了因过多线程竞争同一资源而导致的性能瓶颈。每个线程只处理队列中的一个文件,避免了线程之间的冲突和阻塞,提高了下载过程的稳定性。
[0087] 基于此,提升了文件下载的并行度,充分利用了鸿蒙系统对多核处理的优化,尤其适合需要下载多个文件的场景。其次,轮询机制使得文件下载任务按序进行,确保了队列中每个文件都能被及时处理,避免了任务调度的混乱。这种高效且稳定的下载方式不仅能够加速文件传输,还能保障系统资源的合理分配,最终提升整体下载体验与系统的资源利用效率。
[0088] 在一个实施例中,方法还包括:
[0089] 若目标文件为大文件,则利用鸿蒙系统的文件系统API以读写模式,打开本地用于存储下载文件的存储文件夹;
[0090] 当接收到FTP服务器发送的目标文件的每个数据包时,调用文件写入方法,将接收到的数据包写入至存储文件夹的末尾。
[0091] 其中,鸿蒙系统的文件系统API:鸿蒙系统的文件系统API提供了一组接口,允许应用程序在本地存储、读取和操作文件。这些API通过抽象操作系统底层文件系统,使得应用能够以文件的形式读写数据。数据包是文件传输中按一定大小划分的文件片段。在通过网络传输文件时,通常将文件分割为多个数据包进行传输,每个数据包包含文件的部分数据,接收方接收并重新拼接这些数据包以完成文件的重构。
[0092] 具体而言,在目标文件为大文件的情况下,FTP服务器将分批发送数据包。基于此,在鸿蒙系统中,打开存储文件夹可以通过文件系统API进行。具体地,根据指定的路径,以读写模式打开该文件夹,意味着准备好在该存储文件夹中进行文件数据的写入操作。示例如,先获取文件夹路径,再验证文件夹的存在性,接着通过文件系统API打开该文件夹以进行后续的读写操作。
[0093] 当FTP服务器将数据包发送到客户端时,鸿蒙系统的网络模块接收该数据包,并通过文件系统API将数据包的内容写入到目标文件。文件写入方法会根据目标文件的当前位置,定位到文件末尾,然后将接收到的每个数据包按顺序追加写入。如此,文件数据会在文件末尾继续扩展,直到所有的数据包传输完成。对于大文件的传输,会动态更新文件内容,保证文件的顺序性和完整性。在一个示例中,利用鸿蒙系统提供的API,通过fs.write方法并设置参数Options为OpenMode.READ_WRITE,确保将每次接收的数据包正确追加到文件末尾,从而保障了大文件下载的完整性。
[0094] 本实施例中,首先,打开本地存储文件夹并设置为读写模式,是为了确保本地设备能够接受并保存来自FTP服务器的大文件。通过鸿蒙系统的文件系统API,能够为文件操作提供可靠的支持,确保文件夹存在并且可以进行数据写入。通过读写模式打开文件夹,可以确保在下载过程中,不仅可以读取文件,也可以向文件中写入新的数据。其次,接收到FTP服务器发送的每个数据包时,调用文件写入方法将数据包追加到本地文件的末尾,是为了高效地处理大文件的分块下载。通过分块接收并写入数据,避免了内存的过度占用和传输过程中的延迟。每次写入操作后,文件始终处于可用状态,保证文件数据不会丢失,同时避免了对整个文件的重写,从而提高了文件传输的效率。最后,通过按顺序将数据包写入存储文件夹的末尾,能够确保下载文件的完整性和正确性。由于文件是按数据包顺序追加的,能够确保目标文件在传输完成后完全符合原始文件的结构,避免数据错误或丢失。
[0095] 通过鸿蒙系统高效的文件系统API,能够高效地管理大文件下载过程中的数据写入操作。在文件下载过程中,不仅保证了文件数据的顺序性和完整性,还通过实时写入每个数据包的方式优化了内存使用和文件传输效率,最终提升了在大文件下载场景中的性能和稳定性。
[0096] 在一个实施例中,方法还包括:
[0097] 使用鸿蒙系统中用于网络通信的API集合进行网络连接。
[0098] 其中,鸿蒙系统中的网络通信API集合是指一组允许应用程序在鸿蒙操作系统上进行网络通信的接口。它们提供了各种网络协议支持,如TCP/IP、HTTP、FTP等,用于实现设备间的数据传输和连接。这些API是鸿蒙系统中应用与外部服务或设备之间进行信息交换的桥梁。示例如,使用ohos.net包中的类来处理网络连接,保证在鸿蒙系统上的兼容性。
[0099] 本实施例中,使用鸿蒙系统中的网络通信API进行网络连接,首先通过选择合适的协议和网络接口初始化连接,为计算机设备和FTP服务器之间的数据交换打下了基础。通过调用这些API,能够根据目标地址和协议类型发起连接请求并等待响应,确保数据传输的可靠性。当连接成功时,可以和FTP服务器开始数据传输,保证信息交换的顺利进行。通过这一过程,鸿蒙系统提供了一个灵活、高效的网络连接机制,确保了在不同网络环境下的稳定性和兼容性。同时,这些API支持各种常见网络协议和数据传输方式,能够根据需求选择最合适的连接方式。
[0100] 为便于理解本申请的方案,下面提供具体的示例进行说明。
[0101] 如图2所示,鸿蒙系统应用程序基于TCP/IP协议下载FTP服务器上的文件:
[0102] ①输入服务器地址,与服务器协商默认端口号为21,在鸿蒙应用软件上点击“同步”按钮,TCP协议层与服务器建立连接,连接成功后,此时应答包为:220 Welcome to vsftpd service;
[0103] ②收到220应答后,再次发起用户名TCP协议层请求,默认root;此时应答包为:331 Please specify the password;
[0104] ③收到331应答后,再次发起密码TCP协议层请求,此时应答包为: 230 Login successful;
[0105] ④收到230应答后,表明此时与服务器已登录成功,再次发起二进制文件类型TCP协议层请求,告知服务器当前需要下载文件为二进制类型,此时应答包为:200 Switching to Binary mode;
[0106] ⑤收到200应答后,表明此时已切换到二进制模式,再次发起切换工作目录TCP协议层请求,切换工作目录是下载的文件所在目录,这是与服务器协商好的工作目录,比如:服务器地址:端口号/工作目录/Test/...,此时应答包为:250 Directory successfully changed;
[0107] ⑥收到250应答后,表明此时切换工作目录成功,再次发起被动模式TCP协议层请求,此时应答包:227 Entering Passive Mode(192,168,1,238,217,191);
[0108] ⑦收到227应答后,表明下载文件的地址和端口号,此时需要新创建TCP Socket与当前告知的地址和端口号建立新链接,这是文件下载的数据包地址和端口号,再次发起对文件名的TCP协议层请求,来下载对应的文件。此时服务器收到指定文件名请求后,给客户端发送文件流数据,当前下载结束!
[0109] 下面对本申请实施例提供的基于鸿蒙系统的FTP文件下载装置进行描述,下文描述的基于鸿蒙系统的FTP文件下载装置与上文描述的基于鸿蒙系统的FTP文件下载方法可相互对应参照。如图3所示,本申请还提供了一种基于鸿蒙系统的FTP文件下载装置,装置包括:
[0110] FTP服务器登录模块201,用于在鸿蒙系统的沙箱中,响应于FTP同步请求,从FTP同步请求中获取FTP服务器的登录信息,并采用登录信息登录FTP服务器;
[0111] 下载地址获取模块202,用于当成功登录FTP服务器时,指示FTP服务器切换至二进制模式后,根据获取到的目标文件目录,指示FTP服务器进入目标文件目录,以及接收FTP服务器返回的目标文件的下载地址和下载端口号;
[0112] 目标文件下载模块203,用于根据下载地址和下载端口号,与FTP服务器建立数据传输连接,并通过鸿蒙系统的worker多线程下载目标文件,当目标文件下载完成时,关闭数据传输连接。
[0113] 在一个实施例中,登录信息包括FTP服务器IP地址、FTP服务器端口号、用户名及其对应的密码;FTP服务器登录模块201包括:
[0114] 连接请求发起单元,用于根据FTP服务器IP地址和FTP服务器端口号,向FTP服务器发起连接请求;
[0115] 用户名请求发起单元,用于当确定与FTP服务器连接成功时,根据用户名,向FTP服务器发起用户名请求,以使FTP服务器对用户名进行验证;
[0116] FTP服务器登录单元,用于当确定用户名验证通过时,根据用户名对应的密码,向FTP服务器发起密码请求,以使FTP服务器对密码进行验证,并当确定密码验证通过时,确认登录FTP服务器。
[0117] 在、一个实施例中,下载地址获取模块202包括:
[0118] 二进制文件类型请求发起单元,用于向FTP服务器发起二进制文件类型请求,以使FTP服务器切换至二进制模式;
[0119] 切换工作目录请求发起单元,用于当确定FTP服务器切换至二进制模式时,根据获取到的目标文件目录,向FTP服务器发起切换工作目录请求,以使FTP服务器切换至目标文件目录;
[0120] 下载地址获取单元,用于当确定FTP服务器进入目标文件目录时,向FTP服务器发起被动模式请求,并接收FTP服务器返回的目标文件的下载地址和下载端口号。
[0121] 在一个实施例中,目标文件下载模块203之后,还包括:
[0122] 权限请求框生成模块,用于根据目标文件的文件信息生成权限请求框,以向用户请求文件下载权限;
[0123] 匿名化处理模块,用于当获得授权时,若确定目标文件的文件信息存在敏感信息,则对敏感信息进行匿名化处理。
[0124] 在一个实施例中,目标文件下载模块203包括:
[0125] 多线程创建单元,用于在鸿蒙系统中创建用于管理下载队列的worker多线程,下载队列中包含目标文件的文件列表;
[0126] 目标文件下载单元,用于在worker多线程中,采用轮询机制下载目标文件。
[0127] 在一个实施例中,装置还包括:
[0128] 存储文件夹打开模块,用于若目标文件为大文件,则利用鸿蒙系统的文件系统API以读写模式,打开本地用于存储下载文件的存储文件夹;
[0129] 数据包写入模块,用于当接收到FTP服务器发送的目标文件的每个数据包时,调用文件写入方法,将接收到的数据包写入至存储文件夹的末尾。
[0130] 在一个实施例中,装置还包括:
[0131] 网络连接模块,用于使用鸿蒙系统中用于网络通信的API集合进行网络连接。
[0132] 在一个实施例中,本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述基于鸿蒙系统的FTP文件下载方法的步骤。
[0133] 在一个实施例中,本申请还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述基于鸿蒙系统的FTP文件下载方法的步骤。
[0134] 示意性地,如图4所示,图4为本申请实施例提供的一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图4,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的基于鸿蒙系统的FTP文件下载方法。
[0135] 计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如Windows Server TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
[0136] 本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0137] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本文中,“一”、“一个”、“所述”、“该”和“其”也可以包括复数形式,除非上下文清楚指出另外的方式。多个是指至少两个的情况,如2个、3个、5个或8个等。“和/或”包括相关所列项目的任何及所有组合。
[0138] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
[0139] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。