【问题标题】:Download a file from MediaFire with Java使用 Java 从 MediaFire 下载文件
【发布时间】:2015-03-28 16:12:07
【问题描述】:

众所周知,或者可能知道,MediaFire 不允许直接下载链接,但您实际上必须单击“下载”按钮以生成引用文件的随机链接。有没有办法获取该链接并下载它?

【问题讨论】:

    标签: java mediafire


    【解决方案1】:

    对编写自动更新应用程序感到绝望,我编写了一个简短的 Java 应用程序,它允许从 MediaFire 下载文件。完整代码如下:

    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    
    public class mainwindow {
    
        /**
         * Launch the application.
         */
        static mainwindow thisInstance;
        public static void main(String[] args) {
            new mainwindow();
    
        }
        public mainwindow() 
    {
            otherthread();
        }
        public void otherthread()
        {
            navigate("http://www.mediafire.com/download/aqtmhwvb8yvqclu/SmartSharePC.jar","downloadedFromMediafire");
    //      navigate("http://www.mediafire.com/download/j7e4wh6hbdhdj84/Minecraft+1.5.2-+C.H.T.zip","mediafire");
        }
        private void navigate(String url,String sufix)
        {
            try 
            {
                String downloadLink = fetchDownloadLink(getUrlSource(url));
                saveUrl(downloadLink,sufix);
            } catch (Exception e) 
            {
                e.printStackTrace();
            }
    
        }
        public void saveUrl(final String urlString,String sufix) throws Exception 
        {
            System.out.println("Downloading...");
            String filename = urlString.substring(urlString.lastIndexOf("/")+1, urlString.lastIndexOf("."))+"_"+sufix+urlString.substring(urlString.lastIndexOf("."), urlString.length());
            BufferedInputStream in = null;
            FileOutputStream fout = null;
            try {
                in = new BufferedInputStream(new URL(urlString).openStream());
                fout = new FileOutputStream(filename);
    
                final byte data[] = new byte[1024];
                int count;
                while ((count = in.read(data, 0, 1024)) != -1) 
                {
                    fout.write(data, 0, count);
                }
            } finally {
                if (in != null) {
                    in.close();
                }
                if (fout != null) {
                    fout.close();
                }
            }
            System.out.println("Success!");
        }
        private static String getUrlSource(String url) throws IOException 
        {
            System.out.println("Connecting...");
            URL yahoo = new URL(url);
            URLConnection yc = yahoo.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    yc.getInputStream(), "UTF-8"));
            String inputLine;
            String total="";
            while ((inputLine = in.readLine()) != null)
               total+=inputLine;
            in.close();
    
            return total;
        }
        private static String fetchDownloadLink(String str)
        {
            System.out.println("Fetching download link");
            try {
                String regex = "(?=\\<)|(?<=\\>)";
                String data[] = str.split(regex);
                String found = "NOTFOUND";
                for (String dat : data) {
                    if (dat.contains("DLP_mOnDownload(this)")) {
                        found = dat;
                        break;
                    }
                }
                String wentthru = found.substring(found.indexOf("href=\"") + 6);
                wentthru = wentthru.substring(0, wentthru.indexOf("\""));
                return wentthru;
            } catch (Exception e) 
            {
                e.printStackTrace();
                return "ERROR";
            }
        }
    }
    

    【讨论】:

    • 这就是你问题的答案?
    • 我觉得可以,试试看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2016-01-15
    • 2012-08-24
    • 1970-01-01
    • 2012-01-14
    • 2015-05-06
    相关资源
    最近更新 更多