发明内容
鉴于现有技术的不足,本发明目的在于提供一种文件上传及下载的方法和***。旨在解决现有文件上传时针对多个不同位置的文件进行上传需要花费较多时间去选择查找文件,再依次进行传输,导致用户时间浪费等问题。
本发明的技术方案如下:
一种文件上传及下载的方法,其中,所述方法包括上传方法和下载方法;其中,所述上传方法以下步骤:
S1、根据用户指令选择所需上传的文件或根据用户指令选择所需上传的文件所在的文件夹或硬盘区域;
S2、确定所述文件上传的服务器;
S3、通过web交互获取文件上传的服务器的地址,将所选文件上传到所述服务器的地址;
其中,当根据用户指令选择所需上传的文件所在的文件夹或硬盘区域
时,所述步骤S2中还包括:确定所需上传文件的格式;
所述步骤S3中将所选文件上传到所述服务器的地址具体包括:根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址。
所述的一种文件上传及下载的方法,其中,还包括步骤S4,当文件上传成功后,向所述服务器提供必要的文件信息;其中,所述文件信息包括:文件大小、文件存储的数据库和文件类型。
所述的一种文件上传及下载的方法,其中,还包括步骤S5:当文件上传失败时,根据用户需要选择全部或者部分文件的取消上传;
所述取消上传是指断开文件传输的链路停止上传,然后通知服务器删除已经上传的一部分文件。
所述的一种文件上传及下载的方法,其中,所述步骤S3具体包括:
S31、通过调用webservice接口获取配置信息,所述配置信息包括文件类型和FTP文件保存目录;
S32、将所选文件上传至FTP服务器上对应的目录,其包括单文件上传、多文件上传和断点续传;在所述文件上传过程中,实时监控文件上传进度信息,并确定所需上传的文件的类型;
S33、文件上传完毕之后,通过调用webservice接口传送文件上传状态;所述文件上传状态包括文件的保存路径名和文件类型。
所述的一种文件上传及下载的方法,其中,所还包括步骤S6:对未上传的或已经上传的文件进行在线解压,即将压缩文件在本地或服务器上实现一键解压。
所述的一种文件上传及下载的方法,其中,所述下载步骤包括:
M1、根据用户指令,确定所述下载属于源文件保留下载或源文件删除下载;
M2、当下载内容包括两个以上文件且没有对下载后的文件命名时或对文库进行下载时,则下载到本地后下载内容以文件夹形式保存;
M3、当上传的内容为文件夹时,则上传到平台中以文库保存;
其中,所述步骤M2中还包括根据用户需要选择全部或者部分文件的取消下载。
一种文件上传及下载的***,其中,包括文件上传***和文件下载***,其中,所述文件上传***包括:
选择单元,用于根据用户指令选择所需上传的文件或根据用户指令选择所需上传的文件所在的文件夹或硬盘区域;
服务器确定单元,用于确定所述文件上传的服务器;
上传单元,用于通过web交互获取文件上传的服务器的地址,将所选文件上传到所述服务器的地址;
其中,所述选择单元中当根据用户指令选择所需上传的文件所在的文件夹或硬盘区域时,所述文件类型确定单元中还包括:确定所需上传文件的格式;所述步骤上传单元中将所选文件上传到所述服务器的地址具体包括:根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址。
所述的文件上传及下载的***,其中,所述上传***还包括反馈单元,用于当文件上传成功后,向所述服务器提供必要的文件信息;其中,所述文件信息包括:文件大小、文件存储的数据库和文件类型。
所述的文件上传及下载的***,其中,所述上传***还包括取消单元,用于当文件上传失败时,根据用户需要选择全部或者部分文件的取消上传;所述取消上传是指断开文件传输的链路停止上传,然后通知服务器删除已经上传的一部分文件。
所述的文件上传及下载的***,其中,所述下载***包括:
确定单元,用于根据用户指令,确定所述下载属于源文件保留下载或源文件删除下载;
保存单元,用于当下载内容包括两个以上文件且没有对下载后的文件命名时或对文库进行下载时,则下载到本地后下载内容以文件夹形式保存;
其中,所述保存单元中还包括根据用户需要选择全部或者部分文件的取消下载。
有益效果:
本发明的文件上传及下载的方法和***,当进行多个文件上传时,根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址;大大节约了用户查找文件的时间,提高了文件上传的效率,当进行文件下载时,则根据用户指令对下载到本地后下载内容以文件夹形式保存,节约了用户下载的时间,简化了用户的操作,具有很好的推广应用前景。
具体实施方式
本发明提供一种文件上传及下载的方法和***,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明公开的文件上传及下载的方法和***,其包括两个部分:文件上传部分和文件下载部分,为了方便理解,在此将其分开进行描述:
所述方法包括上传方法和下载方法,首先,先介绍上传方法。
如图1所示,其为本发明的文件上传的方法的流程图。所述方法包括以下步骤:
S1、根据用户指令选择所需上传的文件或根据用户指令选择所需上传的文件所在的文件夹或硬盘区域;
S2、确定所述文件上传的服务器;
S3、通过web交互获取文件上传的服务器的地址,将所选文件上传到所述服务器的地址。
其中,当根据用户指令选择所需上传的文件所在的文件夹或硬盘区域时,所述步骤S2中还包括:确定所需上传文件的格式。所述确定所需上传文件的格式具体为:***提供常见的文件格式供用户选择,用户根据***提示选择一种或多种文件格式,而当***没有提供某类型的文件格式时,用户可以自定义文件格式。所述自定义文件格式即用户输入文件的后缀名。例如***提供常见文件的格式包括:word文档、ppt文档、Excel、PDf、JPG、MP4、AVI等,而***没有提供选择的常见文件的格式,用户可以输入文件的后缀名。所述文件的后缀名即Windows操作***中扩展名。所述文件的格式是依据文件的后缀名来区分的。所述步骤S3中将所选文件上传到所述服务器的地址具体包括:根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址。
下面分别针对上述步骤进行具体描述。
所述步骤S1为根据用户指令选择所需上传的文件或根据用户指令选择所需上传的文件所在的文件夹或硬盘区域。即上传文件分为两种模式,自选文件上传模式和遍历文件上传模式。如果是自选文件上传模式,用户必须人工选择每一个需要上传的文件。人工选择每一个需要上传的文件的具体操作为:首先选择某个文件所在盘符(默认为桌面),然后选择该文件所在文件夹,最后选择该文件,如此反复直到把所有需要上传的文件都选出为止。如果是遍历文件上传模式,用户只需要选择文件所在的硬盘(或多个硬盘)或文件夹(或多个文件夹)。
所述步骤S2为确定所述文件上传的服务器。即选择文件上传到服务器中存放的路径,***预先在服务器中设置了多个路径用于存放上传到服务器中的文件,每一个路径称为一个文库。用户选择文件上传的服务器需要与上传单元交互,将用户的选择信息发送给上传单元,确定上传文件上传到服务器中哪个文库。
所述步骤S3为通过web交互(soap协议)获取文件上传的服务器的地址,将所选文件上传到所述服务器的地址。需要注意地是,当选择文件遍历模式进行上传时,将所选文件上传到所述服务器的地址具体包括:根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址。如此一来,大大节约了用户查找文件的时间,提高了文件上传的效率。
进一步地,所述的文件上传的方法中,还可以包括步骤S4、当文件上传成功后,向所述服务器提供必要的文件信息;其中,所述文件信息包括:文件大小、文件存储的数据库和文件类型。即文件上传成功后,获取文件存储的相应信息,方便用户进行文件查找。
更进一步地,所述的文件上传的方法中,还包括步骤S5、当文件上传失败时,根据用户需要选择全部或者部分文件的取消上传;所述取消上传是指断开文件传输的链路停止上传,然后通知服务器删除已经上传的一部分文件。从而在文件传输失败时,令服务器删除传输失败的文件,节约了服务器的空间。
进一步地,所述步骤S2中还包括:确定所需上传的文件的类型。所述确定所需上传的文件的类型即给上传的文件一个分类以方便管理,用户根据该文件内容的自行判断选择该文件的所属类型,所述文件类型如私人文书、办公文书、风景名胜、录音文件、语言参考、自定义类型等等。***预定义一些文件的类型给用户选择,用户也可以根据自己的喜好自定义文件的类型。
另外,可以对未上传的或已经上传的文件进行在线解压,即将压缩文件在本地或服务器上实现解压。现有技术中对于上传文件进行解压缩,需要右击图标,然后从下拉列表中选择解压文件,然后点击确定(前提为安装过相关解压软件并关联过右键菜单),解压完成以后就会在压缩文件所在目录出现一个新的文件。而在本发明的方案中,可以对未上传的或已经上传的文件通过一个命令,实现一键解压,大大方便了用户的操作。
在上述方案中,用C++编程语言在Windows操作***中所需要的API(ApplicationProgramming Interface 应用程序编程接口)函数包括:
//获取***所有驱动器及序号
static bool GetVolumeInfoName(CStringArray& VolumeInfo);
//获取驱动器序列号
static bool GetVolumeInfo(const CString& strRootPahtName, CString&strSeriaNmu);
//获取磁盘驱动器类型
static UINT GetVolumeDriveType(const CString& strRootPahtName,CString& strDriveType);
//获取Windows目录
static UINT GetWindowsDirectoryDir(CString& strPath);
//获取***目录
static UINT GetSystemDirectoryDir(CString& strPath);
//获取程序默认当前目录
static UINT GetCurrentDirectoryDir(CString& strPath);
//获取程序的完整路径
static DWORD GetFullPathDir(CString& strPath);
//获取当前目录下的文件夹和文件(包括隐藏文件)
GetFloderAndFilesName(CString& strPath, CStringArray& FloderStr,CStringArray& FilesStr/*, VARIANT_BOOL IsHidden*/)
//获取桌面路径
GetWindowsDesktopDir(CString& strPath)
另外,在本发明的文件上传过程中,主要实现将文件从本地上传到文件服务器的功能,并且支持大文件上传的要求(具体标准:单个上传文件最大限制:.net默认的上传限制是4M。大于.net上传限制的最大值,小于2G。)。同时,还支持单文件上传、多文件上传、文件上传进度监控、断点续传。其实现方案可以通过编写ActiveX插件,提供访问客户端资源和网络通讯的接口和功能,来弥补B/S网站程序的不足。另外,在本实施例中,所述文件服务器为 FTP(支持断点续传功能)服务器。
进一步地,在本实施例中,所述步骤S3具体包括:
S31、通过调用webservice接口获取配置信息,所述配置信息包括文件类型和FTP文件保存目录;
S32、将所选文件上传至FTP服务器上对应的目录,其包括单文件上传、多文件上传和断点续传;
S33、文件上传完毕之后,通过调用webservice接口传送文件上传状态;所述文件上传状态包括文件的保存路径名和文件类型。
在本实施例中,所述步骤S32中还包括:在所述文件上传过程中,实时监控文件上传进度信息。即设置一回调函数(监控文件上传进度信息):
Typdef void (callback*)(short npercent);
另外,所述步骤S42中将所选文件上传至FTP服务器上对应的目录具体包括:
S321、构造网络功能类对象,获取配置信息;
S322、初始化FTP网络连接信息;具体包括通过配置信息获取的FTP网络地址、用户名、密码连接FTP服务器,创建连接套接字;
S323、向FTP服务器发送文件;其支持单文件上传(支持单个文件的上传)、多文件上传(即循环调用此API进行执行操作多线程上传文件),以及断点续传(在文件上传过程中,出现传输中断的情况时,支持重新连接并续传文件);
S324、关闭FTP网络连接(关闭FTP网络连接套接字),并销毁网络功能类对象,释放配置信息(销毁FTP连接对象,释放内存资源)。
其中,S321中构造网络功能类对象,获取配置信息具体包括:
根据用户ID,通过调用网络模块中的WebService获取配置信息API,获取对应的配置信息, 供文件上传功能使用。
需要的配置信息如下:(与FTP上传的相关信息)
1. FTP服务器文件保存目录 例:http://www.ftp.com/file1/
2. FTP用户名 例:ftpuser
3. FTP用户密码 例:123456
4. FTP IP地址 例:10.0.70.106
5. FTP 端口 例:默认21
6. 用户存储空间总量 例:ybuser用户有{5G}存储量
7. 用户已存储空间总量 例: ybuser用户已使用{2G}存储量。
在本实施例中,在Windows操作***下用C++编程语言构造网络功能类对象的API设置如下:
网络功能类
Class FileLoadClient {
public:
//构造函数,【IN】参数用户ID
FileLoadClient(string uid);
//析构函数
~FileLoadClient();
//获取页面显示所需要的配置信息
string FileLoadClient::GetPageConfigData();
//初始化FTP网络
int FileLoadClient::initFTPNet();
//发送文件,注册文件传输进度回调函数
int FileLoadClient::sendFile(string file, func callback);
//关闭FTP网络
int FileLoadClient::closeFTPNet();
private:
FTPConnect ftbcl; //FTP网络连接
}
进一步地,所述方法还包括文件下载方法,其中,所述文件下载方法的步骤包括:
M1、根据用户指令,确定所述下载属于源文件保留下载或源文件删除下载;即根据用户指令,对服务器端的下载文件进行保留或删除;
M2、当下载内容包括两个以上文件且没有对下载后的文件命名时或对文库进行下载时,则下载到本地后下载内容以文件夹形式保存;
M3、当上传的内容为文件夹时,则上传到平台中以文库保存; 完美地实现了文件夹与文库的完美转换。
其中,所述步骤M2中还包括根据用户需要选择全部或者部分文件的取消下载。
本发明还提供了一种文件上传及下载的***,其包括文件上传***和文件下载***,如图2所示,所述文件上传***包括:
选择单元100,用于根据用户指令选择所需上传的文件或根据用户指令选择所需上传的文件所在的文件夹或硬盘区域;
服务器确定单元200,用于确定所述文件上传的服务器;
上传单元300,用于通过web交互获取文件上传的服务器的地址,将所选文件上传到所述服务器的地址;
其中,所述选择单元中当根据用户指令选择所需上传的文件所在的文件夹或硬盘区域时,所述文件类型确定单元中还包括:确定所需上传文件的格式;所述步骤上传单元中将所选文件上传到所述服务器的地址具体包括:根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址。
进一步地,所述的文件上传的***中,还包括反馈单元,用于当文件上传成功后,向所述服务器提供必要的文件信息;其中,所述文件信息包括:文件大小、文件存储的数据库和文件类型。
更进一步地,所述的文件上传的***中,还包括取消单元,用于当文件上传失败时,根据用户需要选择全部或者部分文件的取消上传;所述取消上传是指断开文件传输的链路停止上传,然后通知服务器删除已经上传的一部分文件。
更进一步,所述的文件上传的***中,还包括文件类型确定单元,用于确定所需上传的文件的类型。
另外,所述的文件上传及下载的***中,所述下载***包括:
确定单元,用于根据用户指令,确定所述下载属于源文件保留下载或源文件删除下载;
保存单元,用于当下载内容包括两个以上文件且没有对下载后的文件命名时或对文库进行下载时,则下载到本地后下载内容以文件夹形式保存;
其中,所述保存单元中还包括根据用户需要选择全部或者部分文件的取消下载。
上述各个部分的功能都已经在上述方法中进行了详细介绍,这里就不再冗述了。
综上所述,本发明公开的文件上传及下载的方法和***,当进行多个文件上传时,根据所选文件的格式遍历所选的硬盘或文件夹,搜索出符合标准的文件,然后将所述文件上传到所述服务器的地址;大大节约了用户查找文件的时间,提高了文件上传的效率,当进行文件下载时,则根据用户指令对下载到本地后下载内容以文件夹形式保存,节约了用户下载的时间,简化了用户的操作,具有很好的推广应用前景。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。