精华内容
下载资源
问答
  • android ftp传输

    2012-04-20 18:24:30
    很好的android平台ftp传输工具,界面简单,使用方便
  • linux安卓ftp传输Alberto Garcia Guillen/ShutterstockAlberto Garcia Guillen /快门Do you have an Android phone and a Linux desktop? You can transfer files wirelessly, send texts from your PC, and control...
    linux安卓ftp传输

    linux安卓ftp传输

    Smartphone with a Linux tux logo and a laptop
    Alberto Garcia Guillen/ShutterstockAlberto Garcia Guillen /快门

    Do you have an Android phone and a Linux desktop? You can transfer files wirelessly, send texts from your PC, and control your phone from your computer. It’s like Windows 10’s Your Phone app for Linux!

    您有Android手机和Linux桌面吗? 您可以无线传输文件,从PC发送文本以及从计算机控制手机。 就像Windows 10的Linux版Your Phone应用一样

    Android和Linux整合 (Android and Linux Integration)

    KDE Connect is a slick and richly featured piece of software that integrates your Android handset right into your KDE desktop environment.

    KDE Con​​nect是一款功能丰富精美软件,可将您的Android手机直接集成到您的KDE桌面环境中。

    It provides many features such as two-way notifications between your phone and computer, wireless transfer of files in both directions, and the sending of SMS texts from your computer. KDE Connect is an integral part of the KDE desktop environment.

    它提供了许多功能,例如手机与计算机之间的双向通知,双向无线传输文件以及从计算机发送SMS文本。 KDE Con​​nect是KDE桌面环境不可或缺的一部分。

    GSConnect is a version of the software developed for the GNOME desktop environment. It is built as a GNOME extension. GNOME users must install GSConnect.

    GSConnect是为GNOME桌面环境开发的软件版本。 它是作为GNOME扩展构建的。 GNOME用户必须安装GSConnect。

    To take care of the Android side of things, KDE and GNOME users alike must install and use the KDE Connect Android app.

    为了处理Android方面的事务,KDE和GNOME用户都必须安装并使用KDE Con​​nect Android应用程序。

    The computer you are going to pair your Android phone to does not have to be using Wi-Fi. It can be plugged into the network using an ethernet cable. It must be on the same network as your handset, but that’s the only requirement.

    您要与Android手机配对的计算机不必使用Wi-Fi。 可以使用以太网电缆将其插入网络。 它必须与手机在同一网络上,但这是唯一要求。

    安装步骤 (The Installation Steps)

    Installing GSConnect is straightforward, but the steps must be followed in the correct order.

    安装GSConnect很简单,但是必须按照正确的顺序进行操作。

    1. Install the KDE Connect app on your Android phone.

      在您的Android手机上安装KDE Con​​nect应用程序。
    2. If you’re using Google Chrome, install the chrome-gnome-shell Linux software.

      如果您使用的是Google Chrome浏览器,请安装chrome-gnome-shell Linux软件。

    3. Configure Chrome or Firefox to integrate with the GNOME shell.

      将Chrome或Firefox配置为与GNOME Shell集成。
    4. Use Chrome or Firefox to install the GSConnect GNOME extension.

      使用Chrome或Firefox安装GSConnect GNOME扩展。
    5. Pair your Android handset to your KDE or GNOME desktop environment.

      将您的Android手机与KDE或GNOME桌面环境配对。

    KDE users only need to do the first and last steps. GNOME users who are using Firefox as their browser do not need to do step two.

    KDE用户只需要执行第一步和最后一步。 谁正在使用Firefox作为浏览器GNOME用户不需要做第二步。

    安装Android应用 (Installing the Android App)

    On your Android handset, open the Play Store and search for “KDE Connect.” When the app has been found, click the green “Install” button.

    在您的Android手机上,打开Play商店,然后搜索“ KDE Con​​nect”。 找到该应用程序后,单击绿色的“安装”按钮。

    KDE Connect on the Play Store

    When the installation has completed, you will be able to find the “KDE Connect” icon in the Apps Launcher.

    安装完成后,您将可以在Apps Launcher中找到“ KDE Con​​nect”图标。

    KDE Icon in the apps launcher

    If you use Google Chrome as your browser, you will need to install the chrome-gnome-shell integration software. If you’re using Firefox, you don’t need to do this, so skip this step and go straight to the section titled Configure Firefox to Manage GNOME Extensions.

    如果您使用Google Chrome浏览器,则需要安装chrome-gnome-shell集成软件。 如果您使用的是Firefox,则无需执行此操作,因此跳过此步骤,直接转到标题为“配置Firefox以管理GNOME扩展”的部分

    Use apt-get to install this package onto your system if you’re using Ubuntu or another Debian-based distribution. On other Linux distributions, use your Linux distribution’s package management tool instead.

    如果您使用的是Ubuntu或其他基于Debian的发行版,请使用apt-get将此软件包安装到系统上。 在其他Linux发行版上,请改用Linux发行版的程序包管理工具。

    sudo apt-get install chrome-gnome-shell
    
    sudo apt-get install chrome-gnome-shell in a terminal window

    配置Chrome以管理GNOME扩展 (Configure Chrome to Manage GNOME Extensions)

    Open Google Chrome and browse to the Chrome Web Store. Search for “GNOME Shell integration.”

    打开Goog​​le Chrome浏览器,然后浏览到Chrome网上应用店。 搜索“ GNOME Shell集成”。

    When you see the GNOME Shell integration extension click the blue “Add to Chrome” button.

    当您看到GNOME Shell集成扩展时,单击蓝色的“添加到Chrome”按钮。

    Google Chrome web store

    You will be asked to confirm that you want to add the extension to Chrome. Click the “Add extension” button.

    系统将要求您确认是否要将扩展程序添加到Chrome。 点击“添加扩展名”按钮。

    Confirm adding an extension to Chrome

    When the extension has been added to Chrome, you will see the GNOME footprint icon in the top right of the Chrome toolbar.

    将扩展程序添加到Chrome后,您将在Chrome工具栏的右上方看到GNOME示意图图标。

    GNOME Icon in the Chrome toolbar

    You should now jump to the Install the GSConnect GNOME Desktop Extension section, below.

    现在,您应该跳到下面的“安装GSConnect GNOME桌面扩展”部分。

    配置Firefox以管理GNOME扩展 (Configure Firefox to Manage GNOME Extensions)

    Open Firefox and browse to the Firefox Add-Ons website. Search for “GNOME Shell integration.”

    打开Firefox并浏览到Firefox加载项网站。 搜索“ GNOME Shell集成”。

    When you see the GNOME Shell integration extension click the blue “Add to Firefox” button.

    当您看到GNOME Shell集成扩展时,单击蓝色的“添加到Firefox”按钮。

    GNOME Shell integrations in Firefox Add-Ons

    You will be asked to confirm that you want to add the extension to Firefox. Click the blue “Add” button.

    系统将要求您确认是否要将扩展添加到Firefox。 点击蓝色的“添加”按钮。

    Confirm adding extension to Firefox

    When the extension has been added to Firefox, you will see the GNOME footprint icon in the top right of the Firefox toolbar.

    将扩展添加到Firefox后,您将在Firefox工具栏的右上方看到GNOME足迹图标。

    GNOME Icon in the Firefox toolbar

    We can now add the GSConnect GNOME desktop extension.

    现在,我们可以添加GSConnect GNOME桌面扩展。

    安装GSConnect GNOME桌面扩展 (Install the GSConnect GNOME Desktop Extension)

    In Google Chrome or Firefox, click the GNOME footprint icon in the top right of the toolbar. Search for “GSConnect” and click the “GSConnect” entry when it appears.

    在Google Chrome或Firefox中,单击工具栏右上方的GNOME示意图图标。 搜索“ GSConnect”,然后在出现时单击“ GSConnect”条目。

    Searching for GSConnect

    Click the On / Off button so that the blue “On” section is showing. This downloads, installs, and then activates the GSConnect GNOME extension.

    单击开/关按钮,以显示蓝色的“开”部分。 这将下载,安装并激活GSConnect GNOME扩展。

    GSConnect ON/OFF button

    You may now close your browser.

    您现在可以关闭浏览器。

    验证移动设备在系统菜单中 (Verify Mobile Devices is in the System Menu)

    Open the GNOME system menu. You should see a new entry in the menu titled “Mobile Devices.” If you cannot see this new menu entry, repeat the steps described above.

    打开GNOME系统菜单。 您应该在标题为“移动设备”的菜单中看到一个新条目。 如果看不到此新菜单项,请重复上述步骤。

    Mobile Devices menu entry

    配对您的Android手机和计算机 (Pairing Your Android Phone and Your Computer)

    Click the Mobile Devices menu entry. The menu will expand. Click the “Mobile Settings” menu entry.

    单击移动设备菜单项。 菜单将展开。 单击“移动设置”菜单项。

    Mobile Devices menu expanded

    A window will appear which has the name of your computer as its title. If the KDE Connect app is running on your Android phone, you will see it listed in this window.

    将出现一个窗口,其中以您的计算机名称为标题。 如果您的Android手机上正在运行KDE Con​​nect应用程序,您将在此窗口中看到该应用程序。

    Window with unpaired device

    On your Android phone, start the KDE Connect app if it is not running. When the app opens, you should see the name of your computer listed as an available device. In this example, it is “howtogeek.”

    如果您的Android手机未运行,请启动它。 打开应用程序后,您应该看到计算机的名称列为可用设备。 在此示例中,它是“ howtogeek”。

    KDA Connect app with unpaired computer

    Tap the name of your computer. The app will tell you the device is not paired. Press the blue “Request pairing” button.

    点击您的计算机名称。 该应用程序将告诉您设备未配对。 按下蓝色的“请求配对”按钮。

    KDE Connect request pairing screen

    A Pair Request dialog box will appear on your computer. It will tell you the name of the Android phone that is requesting the connection. In this example, it is Honor.

    配对请求对话框将出现在您的计算机上。 它将告诉您请求连接的Android手机的名称。 在此示例中,它是荣誉。

    Click the “Accept” button to accept the pairing request.

    点击“接受”按钮接受配对请求。

    Pairing confirmation dialog

    Your KDE Connect app will display a set of functions that are now available.

    您的KDE Con​​nect应用程序将显示一组现在可用的功能。

    KDE Connect main menu

    Your Android handset will be listed as connected on your computer.

    您的Android手机将在计算机上列为已连接。

    Android handset listed as connected on computer

    If you click the name of your Android phone the dialog will show you a set of options and settings that you can use to fine-tune the interworking between your computer and your mobile phone.

    如果单击Android手机的名称,则对话框将为您显示一组选项和设置,可用于微调计算机和手机之间的交互作用。

    Honor smartphone settings

    The Mobile Devices menu entry in the GNOME system menu will be replaced by a menu entry showing the name of the Android phone that has been paired. Clicking that menu entry will reveal a sub-menu with new functionality in it.

    GNOME系统菜单中的“移动设备”菜单项将由显示已配对的Android手机名称的菜单项代替。 单击该菜单项将显示一个具有新功能的子菜单。

    GNOME system menu with a paired device

    Your two devices are now paired.

    您的两个设备现已配对。

    使用KDE更简单 (It’s a Lot Simpler with KDE)

    KDE Connect is an integral part of KDE. Because of the smooth integration between the two, the setup process is effortless compared to the GNOME process.

    KDE Con​​nect是KDE不可或缺的一部分。 由于两者之间的平滑集成,因此与GNOME流程相比,设置过程非常轻松。

    Open the system menu in KDE. Click the “Applications” icon.

    在KDE中打开系统菜单。 单击“应用程序”图标。

    KDE System menu

    Click the “Settings” menu item.

    单击“设置”菜单项。

    KDE System Applications Menu

    Click the “System Settings” menu entry.

    单击“系统设置”菜单项。

    KDE Settings Menu

    The System Settings dialog will appear.

    出现“系统设置”对话框。

    Scroll down until you can see the KDE Connect menu item. Click the “KDE Connect” menu item.

    向下滚动,直到您可以看到KDE Con​​nect菜单项。 单击“ KDE Con​​nect”菜单项。

    KDE System Settings dialog

    On your Android phone, start the KDE Connect app if it is not running. When the app opens, you should see the name of your computer listed as an available device.

    如果您的Android手机未运行,请启动它。 当应用程序打开时,您应该看到计算机的名称列为可用设备。

    KDA Connect app with unpaired computer

    Tap the name of your computer. The app will tell you the device is not paired. Press the blue “Request Pairing” button.

    点击您的计算机名称。 该应用程序将告诉您设备未配对。 按下蓝色的“请求配对”按钮。

    KDE Connect request pairing screen

    Accept the pairing request on your computer. Your Android handset will now be listed as a paired device in the System Settings window.

    在您的计算机上接受配对请求。 您的Android手机现在将在“系统设置”窗口中以配对设备的形式列出。

    System Settings with a paired Android device

    Click the name of your phone. The System Settings dialog will list settings and functions related to your paired device.

    单击您的电话名称。 系统设置对话框将列出与配对设备有关的设置和功能。

    KDE paired device settings and functions

    Your Android phone and your computer are now paired.

    您的Android手机和计算机现已配对。

    完成Android设置 (Finishing Up the Android Settings)

    The KDE Connect app needs permission from you to allow some of its plugins to operate. Tap each plugin to make sure it has the permissions it requires.

    KDE Con​​nect应用程序需要您的许可才能允许其某些插件运行。 点击每个插件以确保其具有所需的权限。

    KDE Connect plugin permissions

    For example, tapping the “Notification sync” plugin will take you to the Notification access screen. Locate “KDE Connect” in the list and then switch the toggle to the on position.

    例如,点击“通知同步”插件将带您进入通知访问屏幕。 在列表中找到“ KDE Con​​nect”,然后将切换开关切换到打开位置。

    Android Notifications access screen

    Android will ask you to confirm you wish to grant the permission to KDE Connect. Tap the “Allow” button.

    Android会要求您确认要授予KDE Con​​nect权限。 点击“允许”按钮。

    Enable KDE Connect verification options

    The KDE Connect slider button will now be blue indicating that the permission was granted.

    现在,“ KDE连接”滑块按钮将变为蓝色,指示已授予权限。

    KDE connect with notification permission granted

    Continue granting permissions for the plugins you intend to use.  As each plugin that requires permissions is addressed, it is removed from the list.

    继续授予您打算使用的插件的权限。 解决了每个需要权限的插件后,将从列表中将其删除。

    To return to the settings of any plugin tap the three-dot menu icon.

    要返回任何插件的设置,请点击三点菜单图标。

    three-dot menu highlighted

    Then tap the “Plugin settings” menu item.

    然后点击“插件设置”菜单项。

    Plugin settings menu item

    All of the plugins will be listed and can be administered from here.

    所有插件都将列出,并可以从此处进行管理。

    Plugin list

    Android储存位置 (Android Storage Locations)

    The Filesystem expose plugin makes a location in your Android phone accessible to your computer. This allows files to be transferred to your mobile phone from your computer. If you only want to send files from your Android phone to your computer you need not bother with this setting.

    Filesystem公开插件可让您的计算机访问Android手机中的位置。 这样可以将文件计算机传输手机。 如果您只想将文件Android手机发送计算机,则无需担心此设置。

    To set up a storage location, tap the “Filesystem expose” item.

    要设置存储位置,请点击“文件系统公开”项。

    Filesystem expose menu item

    On the Filesystem expose settings screen, tap the blue plus (+) sign.

    在“文件系统公开设置”屏幕上,点击蓝色的加号(+)。

    Add storage location screen

    Tap the “Click to select” option in the Add storage location menu.

    在添加存储位置菜单中点击“单击以选择”选项。

    Select storage location options

    Your Android phone may offer several storage locations to choose from. The Android phone used to research this article only provided one, the Downloads folder. Tap the location you wish to use and then tap “Select.”

    您的Android手机可能会提供多个存储位置供您选择。 用于研究本文的Android手机仅提供了一个下载文件夹。 点击您要使用的位置,然后点击“选择”。

    Android downloads folder

    Tap the Display name menu entry and provide a name for the storage location. In our example, this is “downloads.” Tap “OK.”

    点击“显示名称”菜单项,并提供存储位置的名称。 在我们的示例中,这是“下载”。 点击“确定”。

    Providing a name for the storage location

    Downloads will now appear on the Filesystem expose settings screen.

    现在,下载将出现在“文件系统公开设置”屏幕上。

    Downloads in the filesystem expose settings screen

    将文件传输到计算机 (Transferring FIles to Your Computer)

    Tap the “Send files” option in KDE Connect.

    点击KDE Con​​nect中的“发送文件”选项。

    Send files option in KDE Connect

    KDE Connect will open the default storage location, which was previously set to Downloads. We have a single file in this location. To transfer it to the paired computer, tap the file.

    KDE Con​​nect将打开默认存储位置,该位置先前已设置为“下载”。 我们在此位置有一个文件。 要将其传输到配对的计算机,请点击文件。

    One file in the Android downloads folder

    You will see a transfer notification popup on your computer, informing you that the transfer completed successfully.

    您将在计算机上看到一个转移通知弹出窗口,通知您转移已成功完成。

    Transfer OK notification

    传输多个文件 (Transferring Multiple FIles)

    You can transfer many files at once, and from different locations on your phone.

    您可以一次从手机上的不同位置传输许多文件。

    If you want to transfer files from somewhere other than your default storage location, tap the “hamburger” menu.

    如果要从默认存储位置以外的其他位置传输文件,请点击“汉堡包”菜单。

    The hamburger menu in KDE Connect

    A side-panel appears that allows you to browse throughout the storage on your Android.

    出现一个侧面板,可让您浏览Android上的整个存储。

    Navigation side-pane in KDE Connect

    If you wanted to send images, you’d tap the “Images” icon. If you wanted to transfer audio files, you’d tap the “Audio” icon.

    如果要发送图像,请点击“图像”图标。 如果要传输音频文件,请点击“音频”图标。

    Let’s say we’ve tapped Images. You can select multiple files by tapping each file in turn. A white tick in a blue box appears on the selected files.

    假设我们点击了图片。 您可以依次点击每个文件来选择多个文件。 所选文件中会出现一个蓝色方框中的白色勾号。

    Multiple files selected in KDE Connect

    To transfer the files, tap the word “open.”

    要传输文件,请点击“打开”一词。

    Open option highlighted

    By default, the transferred files arrive on your computer in the Downloads directory.

    默认情况下,传输的文件到达您的计算机的下载目录中。

    Transferred files in the Downloads folder of the computer

    KDE文件管理器集成– Dolphin (KDE File Manager Integration – Dolphin)

    The KDE file manager Dolphin has integration with the KDE Connect app as soon as your Android phone is paired with the computer.

    您的Android手机与计算机配对后,KDE文件管理器Dolphin便已与KDE Con​​nect应用程序集成。

    If you launch Dolphin, you’ll see your Android phone listed under Devices.

    如果您启动Dolphin,则会在“设备”下看到您的Android手机。

    Android phone showing in Dolphin

    Click on your phone’s name to see the default storage location that was set up in the KDE Connect app. Dropping files in this directory will transfer them to your Android phone.

    单击手机名称以查看在KDE Con​​nect应用程序中设置的默认存储位置。 将文件拖放到此目录中会将其传输到您的Android手机。

    Android device selected in Dolphin

    GNOME文件管理器集成– Nautilus (GNOME File Manager Integration – Nautilus)

    There’s a bit more work to be done to achieve the same thing with GNOME. The results are just as good, though.

    要使用GNOME实现相同的功能,还需要做更多的工作。 结果还是一样的好。

    First, we need to install the Nautilus and KDE integration provider. Close any Nautilus windows and then type the following command in a terminal window, and press Enter.

    首先,我们需要安装Nautilus和KDE集成提供程序。 关闭所有Nautilus窗口,然后在终端窗口中键入以下命令,然后按Enter。

    sudo apt install python-nautilus gir1.2-nautilus-3.0 sshfs
    
    sudo apt install python-nautilus gir1.2-nautilus-3.0 sshfs in a terminal window

    Open the System Menu, click the name of your Android phone and then click the “Mount” menu option.

    打开系统菜单,单击您的Android手机的名称,然后单击“安装”菜单选项。

    Mount option in the system menu

    Open a Nautilus file manager window. You will see an entry for your Android phone. It won’t be listed by name—that’s a perk for KDE users—it will be listed by the IP address it has on your Wi-Fi network.

    打开Nautilus文件管理器窗口。 您将看到您的Android手机条目。 它不会按名称列出(这是KDE用户的特权),而是按其在Wi-Fi网络上的IP地址列出。

    In this example, it is 192.168.4.24.

    在此示例中,它是192.168.4.24。

    Android phone mounted in Nautilus

    Selecting the IP address that represents your Android phone allows you to browse to the default storage location of the phone, and to transfer files by dropping them into that directory.

    选择代表您的Android手机的IP地址,可以浏览到手机的默认存储位置,并将文件拖放到该目录中来传输文件。

    感觉就像马拉松 (That Felt Like a Marathon)

    Once you start to experiment and explore the features of GSConnect and KDE Connect, you’ll see that it was worth it. The level of integration is impressive, feels professional, and is genuinely useful.

    一旦开始尝试并探索GSConnect和KDE Con​​nect的功能,您将发现它是值得的。 集成水平令人印象深刻,感觉专业并且真正有用。

    翻译自: https://www.howtogeek.com/423442/how-to-wirelessly-transfer-android-files-to-a-linux-desktop/

    linux安卓ftp传输

    展开全文
  • 用Unity做的Android应用,基于C#的FTP文件传输Demo。工程可直接打包APK安装在两个安卓设备上,一个作为服务端,另一个作为接收端。已测试。如有疑问,请留言
  • 1. 先建一个FTPUtils类 class FTPUtils { private FTPClient ftpClient = null; private static FTPUtils ftpUtilsInstance = null;... private String FTPUrl; private int FTPPort; private String ...

    1. 先建一个FTPUtils类

    class FTPUtils {
        private FTPClient ftpClient = null;
        private static FTPUtils ftpUtilsInstance = null;
        private String FTPUrl;
        private int FTPPort;
        private String UserName;
        private String UserPassword;
    
        private FTPUtils()
        {
            ftpClient = new FTPClient();
        }
        /*
         * 得到类对象实例(因为只能有一个这样的类对象,所以用单例模式)
         */
        public  static FTPUtils getInstance() {
            if (ftpUtilsInstance == null)
            {
                ftpUtilsInstance = new FTPUtils();
            }
            return ftpUtilsInstance;
        }
    
        /**
         * 设置FTP服务器
         * @param FTPUrl   FTP服务器ip地址
         * @param FTPPort   FTP服务器端口号
         * @param UserName    登陆FTP服务器的账号
         * @param UserPassword    登陆FTP服务器的密码
         * @return
         */
        public boolean initFTPSetting(String FTPUrl, int FTPPort, String UserName, String UserPassword)
        {
            this.FTPUrl = FTPUrl;
            this.FTPPort = FTPPort;
            this.UserName = UserName;
            this.UserPassword = UserPassword;
    
            int reply;
    
            try {
                //1.要连接的FTP服务器Url,Port
                ftpClient.connect(FTPUrl, FTPPort);
    
                //2.登陆FTP服务器
                ftpClient.login(UserName, UserPassword);
    
                //3.看返回的值是不是230,如果是,表示登陆成功
                reply = ftpClient.getReplyCode();
    
                if (!FTPReply.isPositiveCompletion(reply))
                {
                    //断开
                    ftpClient.disconnect();
                    return false;
                }
    
                return true;
    
            } catch (SocketException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            }
        }
    
        /**
         * 上传文件
         * @param FilePath    要上传文件所在SDCard的路径
         * @param FileName    要上传的文件的文件名(如:Sim唯一标识码)
         * @return    true为成功,false为失败
         */
        public boolean uploadFile(String FilePath, String FileName) {
    
            if (!ftpClient.isConnected())
            {
                if (!initFTPSetting(FTPUrl,  FTPPort,  UserName,  UserPassword))
                {
                    return false;
                }
            }
    
            try {
    
                //设置存储路径
                ftpClient.makeDirectory("/htdocs");
                ftpClient.changeWorkingDirectory("/htdocs");
    
                //设置上传文件需要的一些基本信息
                ftpClient.setBufferSize(10240);
                ftpClient.setControlEncoding("UTF-8");
                ftpClient.enterLocalPassiveMode();
                ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    
                //文件上传吧~
                FileInputStream fileInputStream = new FileInputStream(FilePath);
                ftpClient.storeFile(FileName, fileInputStream);
    
                //关闭文件流
                fileInputStream.close();
    
                //退出登陆FTP,关闭ftpCLient的连接
                ftpClient.logout();
                ftpClient.disconnect();
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            }
            return true;
        }
    
        /**
         * 下载文件
         * @param FilePath  要存放的文件的路径
         * @param FileName   远程FTP服务器上的那个文件的名字
         * @return   true为成功,false为失败
         */
        public boolean downLoadFile(String FilePath, String FileName) {
    
            if (!ftpClient.isConnected())
            {
                if (!initFTPSetting(FTPUrl,  FTPPort,  UserName,  UserPassword))
                {
                    return false;
                }
            }
    
            try {
                // 转到指定下载目录
                ftpClient.changeWorkingDirectory("/htdocs");
    
                // 列出该目录下所有文件
                FTPFile[] files = ftpClient.listFiles();
    
                // 遍历所有文件,找到指定的文件
                for (FTPFile file : files) {
                    if (file.getName().equals(FileName)) {
                        //根据绝对路径初始化文件
                        File localFile = new File(FilePath);
    
                        // 输出流
                        OutputStream outputStream = new FileOutputStream(localFile);
    
                        // 下载文件
                        ftpClient.retrieveFile(file.getName(), outputStream);
    
                        //关闭流
                        outputStream.close();
                    }
                }
    
                //退出登陆FTP,关闭ftpCLient的连接
                ftpClient.logout();
                ftpClient.disconnect();
    
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            return true;
        }
    
    }

    2. 主Activity添加方法并调用

        public void InitFTPServerSetting() {
            // TODO Auto-generated method stub
            ftpUtils = FTPUtils.getInstance();
            //                                     服务器地址    端口(默认21) 用户名      密码
            boolean flag = ftpUtils.initFTPSetting("60.213.25.12", 21, "bxu2713", "123");
            if (flag){
                Toast.makeText(this, "连接成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "连接失败", Toast.LENGTH_SHORT).show();
            }
        }

    3. 再调用 上传或者下载方法

        private void upload(){
            //上传文件的地址
            File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "1.jpg");
            Log.e("file.getPath()",file.getPath()+"");
            boolean a = ftpUtils.uploadFile(file.getPath(),"1.jpg");
            if (a){
                Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "失败", Toast.LENGTH_SHORT).show();
            }
        }
    
        private void download(){
            //下载文件路径和名字
            File file = new File(Environment.getExternalStorageDirectory(), "4.jpg");
            //服务器文件名
            boolean a = ftpUtils.downLoadFile(file.getPath(),"100.jpg");
            if (a){
                Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "失败", Toast.LENGTH_SHORT).show();
            }
        }

     

    展开全文
  • Android FTP

    2013-03-14 09:08:07
    Android FTP 文件传输 亲测稳定
  • 每一个使用安卓设备的人都知道可以使用 USB 线连接电脑来传输文件,但是不是所有...所有,如果你有一些 DIY 精神,让我为你展示如何在 Linux 和 安卓设备之间使用 FTP传输文件。 第一步:安装必要的软件 为了连...

    每一个使用安卓设备的人都知道可以使用 USB 线连接电脑来传输文件,但是不是所有人都知道可以使用自由开源软件(FOSS 软件)通过无线连接到安卓设备。

    我知道,这并非最简易的方式,但这样做的确很有趣而且感觉很极客。所有,如果你有一些 DIY 精神,让我为你展示如何在 Linux 和 安卓设备之间使用 FTP 来传输文件。

    第一步:安装必要的软件

    为了连接你的安卓设备,至少需要:一个 FTP 服务器和一个 FTP 客户端。这两者都有不少的选择,个人比较推荐 Filezilla 作为客户端,因为它是开源的,而且支持多种平台。

    我最喜欢的 FOSS 安卓应用商店就是 F-Droid。F-Droid 有两个非常棒的 FTP 服务端应用:primitive ftpd 和 FTP Server (Free)。这两者都只能运行在安卓 4.0 或者更高的版本中。本文我会集中介绍 primitive ftpd,如果使用 FTP Sever (free) 也是一样的步骤。

    第二步:熟悉 FTP 服务器

    安装好 FTP 客户端和服务端之后,就是设置两者之间的连接了。先从安卓设备的 FTP 服务端开始,首先,通过应用启动器打开 primitive ftpd。

    打开应用之后,你将看到一大串的数字。不用紧张,你可以看到服务端已经分配到一个 IP 地址 (本文是 192.168.1.131)。往下看,将看到 FTP 和 SFTP 服务 (SFTP 是一个截然不同的协议,它通过 SSH 进行连接) 都是还未运行的。再往下就是用户名,本文设置为 user。

    在屏幕顶端有两个按钮,一个用于开启 FTP 服务,另一个则是设置 FTP 服务。启动服务是不言自明的。

    在设置菜单中,可以改变服务器的用户名、访问密码以及所使用的端口。并且你可以设置当服务器激活是阻止待机、服务开机自启或者变更主题。

    第三步:使用 Filezilla

    现在打开对应你所用系统的 Filezilla。使用 Filezilla 有两种方法:在需要传输文件时输入 IP、用户名、密码和端口,或者在 Filezilla 中预先保存这些信息(值得注意的是:基本上,每次你打开 FTP 服务时,IP 都会不同的,所用需要更新保存在 Filezilla 中信息)。我会展示这两种方法。

    如果你想要手动输入,直接在 Filezilla 窗口上方输入必要的信息然后点击“快速连接”即可。

    需要预先存储信息的话,点击文件菜单下方的按钮,这会打开“站点管理器”对话框,填写你想要保存的信息即可。通常,我设置“登录类型”为“询问密码”,安全为上。如果使用的是 FTP,保存默认选项即可;但如果使用的是 SFTP,必须在协议下拉选项框中进行协议的选择。

    点击连接,输入密码即可。你会看到一个连接新主机的警告,这是可以在此验证屏幕上显示的“指纹信息”是否与 Primitive FTPD 上的一致。如果一致 (也应该是一致的),点击确认添加都已知主机列表,之后就不会出现该警告了。

    第四步:传输文件

    现在,你会看到两个框,一个是“本地站点”,一个是“远程站点”,对应的呈现了你电脑和安装设备上的目录和文件信息。然后你就可以在电脑端浏览和传输文件到你的安卓设备上了。个人建议上传文件到你的 Download 文件夹,以便于文件跟踪管理。你可以右击某个文件,在弹出的菜单中选择上传或者下载以及移动操作,或者简单双击也行。

    第五步:停止服务

    当你完成文件的传输之后,你需要做得就是停止安卓设备上的 FTP 服务和关闭 Filezilla,如此简单,不是吗?

    结论

    我相信会有人指出,FTP 并不安全。而我认为,本例不需要考虑这个问题,因为连接时间一般很短。并且多数情况下,都是在家庭私有网络环境中进行操作。

    这就是我在 Linux 和安卓设备间最喜欢使用的方法。

    原文发布时间为:2016-10-13

    本文来自云栖社区合作伙伴“Linux中国”

    展开全文
  • 这是Android 平台下的安全文件传输客户端版本,学校要求做这样一个项目,这是初版,里面包含了基本的功能,同时也包括了完整的流程,里面整合了很多网上提供的一些资料,毕竟费了点时间整合,在这里多跟大家要点分哈...
  • 最近项目上需要一个功能:使用Android软件搭建一个FTP服务器,接收文件,然后再使用FTP客户端,将此文件上传到另一个PC服务器上。 给予以上的需求,Android实现FTP客户端的功能已经实现,且网上有很多资料可供参考...

    最近项目上需要一个功能:使用Android软件搭建一个FTP服务器,接收文件,然后再使用FTP客户端,将此文件上传到另一个PC服务器上。
    给予以上的需求,Android实现FTP客户端的功能已经实现,且网上有很多资料可供参考。所以主要的工作就是搭建这个FTP服务器。恰巧之前实现FTP客户端功能时使用的是Apache的FTP框架,而搭建FTP服务器的功能也可以使用Apache的这个FTP框架,所以直接下载Apache中用于搭建FTP服务器框架的库文件即可。
    FTP服务器搭建库文件下载路径

    这里写图片描述
    我下载的是1.0.6版本的库文件(第一次下载的最新的1.1.1版本的文件,但是放在项目中后发现没有Ftplet的打包内容,不知道为什么。),如下是我的库文件目录:
    这里写图片描述

    注意:需要在app的gradle中配置如下内容:

        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/DEPENDENCIES'
        }

    否则,在你编译的时候,会因为这几个库文件中存在重复的以上信息而报错,所以在编译打包的时候去除以上重复的信息。

    接下来,就讲述一下Android搭建FTP服务器的过程。

    1 . 搭建FTP服务器
    1.1 在搭建服务器之前,我们首先定义一下默认的客户端用户名和密码,可以使用String类型的资源文件配置,并将配置写入到一个配置文件中,FTP服务器初始化客户端账户的时候,可以加载该配置文件。
    String类型资源文件:在values中创建一个ftpserver_config.xml的文件,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="ftp_users">
    ftpserver.user.admin.userpassword=admin123456\r\n
    
    ftpserver.user.admin.homedirectory=/mnt/sdcard\r\n
    
    ftpserver.user.admin.enableflag=true\r\n
    
    ftpserver.user.admin.writepermission=true\r\n
    
    ftpserver.user.admin.maxloginnumber=2\r\n
    
    ftpserver.user.admin.maxloginperip=2\r\n
    
    ftpserver.user.admin.idletime=3000\r\n
    
    ftpserver.user.admin.uploadrate=102400\r\n
    
    ftpserver.user.admin.downloadrate=102400\r\n
    
    ftpserver.user.anonymous.userpassword=anonymous\r\n
    
    ftpserver.user.anonymous.homedirectory=/mnt/sdcard\r\n
    
    ftpserver.user.anonymous.enableflag=true\r\n
    
    ftpserver.user.anonymous.writepermission=false\r\n
    
    ftpserver.user.anonymous.maxloginnumber=20\r\n
    
    ftpserver.user.anonymous.maxloginperip=2\r\n
    
    ftpserver.user.anonymous.idletime=3000\r\n
    
    ftpserver.user.anonymous.uploadrate=480000\r\n
    
    ftpserver.user.anonymous.downloadrate=480000\r\n
    
    </string>
    </resources>

    注意:换行符不能省~~
    然后在我们的服务器配置类中,加入如下代码,将String类型的内容写入配置文件中:

    private void createPropertyFile() {
            try {
                mPropertyFile = FileUtil.createFile(FileUtil.getRootPath(), "users.properties");
                String config = mContext.getString(R.string.ftp_users);
                FileOutputStream fos = new FileOutputStream(mPropertyFile);
                fos.write(config.getBytes());
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    1.2 启动服务
    这个步骤中,需要配置3个工厂模式的类:
    a. FtpServerFactory: 设置服务器的配置信息,并启动和停止服务器;
    b. PropertiesUserManagerFactory: 配置服务器的用户信息,账户,权限等信息;
    c. ListenerFactory:配置服务器的连接监听信息,端口,地址等信息。
    启动过程的代码如下:

    /**
         * 启动ftp服务
         *
         * @return
         */
        public void start() {
            if (null != mFtpServer) {
                FileUtil.deleteDirAllFiles(mFtpHomePath); // 删除该目录下的所有文件
                stop();
            }
            FtpServerFactory ftpServerFactory = new FtpServerFactory();
            try {
                // 配置FTP用户信息文件
                PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
                userManagerFactory.setFile(mPropertyFile);// 默认账户配置
                UserManager userManager = userManagerFactory.createUserManager();
                // 账户信息(也可以新增用户)
                BaseUser user = (BaseUser) userManager.getUserByName("admin");
                user.setHomeDirectory(mFtpHomePath);
                user.setPassword("admin123456");
                userManager.save(user); // 修改账户信息
                ftpServerFactory.setUserManager(userManager);
    
                ListenerFactory listenerFactory = new ListenerFactory();
                // replace the default listener
                listenerFactory.setPort(Integer.parseInt(GrobalConfig.getConfig(ConfigConstant.FTP_PORT)));
                ftpServerFactory.addListener("default", listenerFactory.createListener());
                // 配置服务器被操作的命令等回复信息,下面详细介绍
                Map<String, Ftplet> ftplets = new HashMap<>();
                ftplets.put("miaFtplet",new MyFtpLet());
                ftpServerFactory.setFtplets(ftplets);
                mFtpServer = ftpServerFactory.createServer();
                mFtpServer.start();
            } catch (FtpException e) {
                e.printStackTrace();
            }
        }

    停止服务:

        /**
         * 关闭ftp服务
         *
         * @return
         */
        public void stop() {
            if (null != mFtpServer && !mFtpServer.isStopped()) {
                mFtpServer.stop();
            }
            mFtpServer = null;
        }

    2 . 服务器对客户端操作的应答(可用于监听上传或下载文件是否完成,本文只介绍上传)
    在DefaultFtplet中提供了很多方法接口,用于在客户端连接、断开、上传下载时返回信息。因此,我们可以从该接口上下手,来监听文件是否上传完成。

    要得到接口中返回的内容,我们就需要写一个类来实现该接口,然后复写我们需要得到状态的方法:

    public class MyFtpLet extends DefaultFtplet {
    
        @Override
        public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException, IOException {
            return super.beforeCommand(session, request);
        }
    
        @Override
        public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException {
            return super.afterCommand(session, request, reply);
        }
    
        @Override
        public FtpletResult onUploadStart(FtpSession session, FtpRequest request) throws FtpException, IOException {
            return super.onUploadStart(session, request);
        }
    
        @Override
        public FtpletResult onUploadEnd(FtpSession session, FtpRequest request) throws FtpException, IOException {
            return super.onUploadEnd(session, request);
        }
    }

    上面,我只列举了上传文件时,我们需要得到的状态信息。其他更详细的方法以及介绍,请自行查阅Ftplet的api介绍
    onUploadStart:上传开始的状态应答,客户端开启上传过程之前的最后一次应答。
    onUploadEnd:上传结束的状态应答,客户端结束上传过程的最后一次应答。
    beforeCommand:客户端发过来的命令。如登录命令,连接命令,切换目录命令,上传命令等。
    afterCommand:客户端命令执行之后的应答。

    FtpSession介绍

    session.getConnectionTime()
    获取用户连接的时间

    session.getFileSystemView()
    获取当前服务器的文件结构,返回类型为FtpFile

    session.getFileSystemView().getHomeDirectory()
    获取服务器根目录路径,返回类型为FtpFile

    session.getFileSystemView().getWorkingDirectory()
    获取用户当前连接的目录路径,返回类型为FtpFile

    session.getFileSystemView().getWorkingDirectory().getName()
    获取用户当前连接的目录名字,返回类型为String

    session.getFileSystemView().getWorkingDirectory().getAbsolutePath()
    获取用户当前连接的目录的完整路径名字,返回类型为String(返回之后最后是没有斜杠的)。用这个可以获取用户文件的存放路径。

    session.getLoginTime()
    获取用户登录时间(这和连接时间是不同的概念)

    FtpRequest介绍
    request.getArgument()
    获取用户提交的命令中的参数,比如存储命令,这个参数就是文件名

    request.getCommand()
    获取用户提交的命令中的命令。比如存储的命令是”STOR”

    request.getRequestLine()
    获取用户提交的命令中的命令+参数

    实际上传过程中的命令及应答情况:
    开启上传,命令验证成功后:
    这里写图片描述

    成功完成传输之后:
    这里写图片描述
    这里写图片描述
    所以,如果是正常传输结束,可以在这个判断文件是否传输完成。当然后续的处理还要结合下面这种情况处理。

    客户端取消传输之后,除了执行上述传输完成的过程,但还会收到一个”ABOR”命令
    完成传输命令之后,收到"ABOR"命令
    执行"ABOR"命令成功之后

    所以,在对于中途取消传输的操作,可以在这个afterCommand方法中,对”ABOR”命令做文件上传的取消操作处理,如删除已上传部分的内容等。

    补充:
    由于Android手机的底层是Linux系统,而该系统限制了小于1024的端口号申请权限。所以如果你的FTP客户端只能连接21端口的FTP服务器,而这时候你又不能开启21端口,那么可以按照如下方法解决:
    1. 获取设备系统权限,即root(必须!!!必须!!!必须!!!)。至于root的方法就请自行百度各种root工具吧~~~~
    2. 将FTP的端口21映射到你需要监听的端口(该端口号大于1024),代码如下:

    private boolean getPermission() {
            Process process = null;
            DataOutputStream os = null;
            try {
                process = Runtime.getRuntime().exec("su");
                os = new DataOutputStream(process.getOutputStream());
                String command = "chmod 777 " + mContext.getPackageCodePath();
                os.writeBytes(command + "\n"); // 申请root权限
                os.writeBytes("iptables -t nat -A PREROUTING -p tcp --dport 21 -j REDIRECT --to-ports 2121\n"); // 将端口21映射到端口2121上
                os.writeBytes("exit\n");
                os.flush();
                process.waitFor();
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            } finally {
                try {
                    if (os != null) {
                        os.close();
                    }
                    process.destroy();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return true;
        }

    通过上面的操作,你就可以设置监听2121端口,而服务器端21端口和2121端口都可用,接收到的数据都转到2121端口上。这样就解决了Android作为FTP服务器,监听端口号小于1024的需求了!!

    以上就是在Android项目中,搭建FTP服务器且监听文件传输状态的代码。很可惜,我没有找到对于文件传输正确性的监听的方法,如果有找到的朋友,请留言指点,谢谢了~~

    展开全文
  • 安卓Ftp服务端Demo

    2020-09-02 16:55:21
    该Demo在安卓端启动FTP服务,使别的ftp客户端进行连接,并进行文件传输,可自定义端口、用户名、还有密码
  • FTP文件传输

    2017-12-12 00:35:00
    最近在做文件传输之类的,发现了文件传输FTP,感觉还挺好用的,让文件的传输变得比较简单 直接上示例 using System; using System.Collections; using System.Collections.Generic; using System.Net.Network...
  • 今天讲一讲 android怎么上传文件到ftp这个功能比较实用的,因为批量上传文件http post 用上传限制的。(特别是大文件)1、先说说例子文件结构2、一个简单的界面3、例子项目文件这两个权限是必须的4、ftp的java类变量...
  • Android FTP服务器上传文件如何实现?发布时间:2020-06-23 15:39:58来源:亿速云阅读:155作者:清晨这篇文章将为大家详细讲解有关Android FTP服务器上传文件如何实现?,小编觉得挺实用的,因此分享给大家做个参考...
  • 关于FTP下载,FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP...
  • FileZilla服务器 在虚拟机上安装FileZilla...在应用宝上下载AndFTP,并进行安装。 进行域名、用户名、密码设置 点开【高级】、将编码更改为FEAT,否则容易出现乱码 点击保存后,进行连接 文件传输和下载 ...
  • 通过ftp使得win10和虚拟机上的QNX传输文件
  • FTP服务器下载windows系统下编写的二进制文件,下载发现总是少几个字节,后来发现是因为windows系统下换行是0D0A两个字节,而在Unix系统下只有0A一个字节,百度到需要把ftp传输模式设置为二进制格式,我也按照...
  • SE FTP服务器是一款文件传输的服务器软件,通过这款软件你能够将文件传输到你所想要的服务器上面,同时这款软件需要搭配上主体程序才能够进行使用,在之后你就能够实现云端和本地的双重文件管理,有需要的话就快来...
  • AndFTP_v4.4安装包+安装教程 AndFTP_v4.5安装包(破解版) AndFTP_Pro_V3.0_Crack_V3.1(安装包+破解补丁)
  • 摄影 篇一:SONY A7R4利用ftp传输直传照片到安卓设备,完爆app体验2020-09-04 13:15:3026点赞151收藏25评论最近头脑一热入手A7R4,主要是为了讨好喜欢摄影的老婆大人,对摄影还是萌新小白一只,不过作为电子产品爱好...
  • android ftp 上传文件 demo

    热门讨论 2013-10-17 10:02:51
    android ftp 上传文件 demo,支持android2.2
  • Android FTP操作

    千次阅读 2015-06-02 16:53:15
    这里使用第三方commons-net-3.0.1.jar连接FTP FTP连接 FTP下载 FTP上传 FTP创建远程服务器目录

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,570
精华内容 3,028
关键字:

安卓ftp传输