pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

FTP zip 上傳有時會損壞

FTP zip upload is corrupted sometimes(FTP zip 上傳有時會損壞)
本文介紹了FTP zip 上傳有時會損壞的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我編寫了一個代碼,用于將少量圖像保存在一個文件中,然后壓縮該文件并上傳到 ftp 服務器.當我從服務器下載它時,很少有文件很好,也很少有文件損壞.這可能是什么原因?壓縮代碼或上傳代碼是否有問題.

I wrote a code for saving few images in a file and later compressing that file and uploading to an ftp server. When I download that from server, few files are fine and few files got corrupted. What can be the reason for that? Whether there may be a fault with Compress code or uploader code.

壓縮代碼:

public class Compress {

private static final int BUFFER = 2048;

private ArrayList<String> _files;
private String _zipFile;

public Compress(ArrayList<String> files, String zipFile) {
    Log.d("Compress", "Compressing started");
    _files = files;
    _zipFile = zipFile;
}

public void zip() {
    try {
        BufferedInputStream origin = null;
        File f = new File(_zipFile);
        if (f.exists())
            f.delete();
        FileOutputStream dest = new FileOutputStream(_zipFile);

        ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
                dest));

        byte data[] = new byte[BUFFER];

        for (int i = 0; i < _files.size(); i++) {
            Log.v("Compress", "Adding: " + _files.get(i));
            FileInputStream fi = new FileInputStream(_files.get(i));
            origin = new BufferedInputStream(fi, BUFFER);
            ZipEntry entry = new ZipEntry(_files.get(i).substring(
                    _files.get(i).lastIndexOf("/") + 1));
            out.putNextEntry(entry);
            int count;
            while ((count = origin.read(data, 0, BUFFER)) != -1) {
                out.write(data, 0, count);
            }
            origin.close();
        }

        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

}

FTP上傳代碼:

public class UploadZipFiles extends AsyncTask<Object, Integer, Object> {
    ArrayList<String> zipFiles;
    String userName, password;
    WeakReference<ServiceStatusListener> listenerReference;
    private long totalFileSize = 0;
    protected long totalTransferedBytes = 0;
    final NumberFormat nf = NumberFormat.getInstance();

    public UploadZipFiles(ServiceStatusListener listener,
            ArrayList<String> zipFiles, String userName, String password) {
        Log.d("u and p", "" + userName + "=" + password);
        this.zipFiles = zipFiles;
        this.userName = userName;
        this.password = password;
        this.listenerReference = new WeakReference<ServiceStatusListener>(
                listener);
        nf.setMinimumFractionDigits(2);
        nf.setMaximumFractionDigits(2);

    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        for (String file : zipFiles) {
            totalFileSize = totalFileSize + new File(file).length();
        }
    }

    @Override
    protected Object doInBackground(Object... arg0) {
        CustomFtpClient ftpClient = new CustomFtpClient();

        try {

            ftpClient.connect(ftpUrl);

            // change here
            ftpClient.login(userName, password);

            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

            for (String file : zipFiles) {

                InputStream in;

                in = new FileInputStream(new File(file));

                ftpClient.storeFile(new File(file).getName(), in);

                in.close();
            }
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        // TODO add files to ftp

        return "Success";
    }

    @Override
    protected void onPostExecute(Object result) {
        if (result instanceof Exception) {
            listenerReference.get().onFailure(
                    new Exception(result.toString()));
        } else {
            listenerReference.get().onSuccess("Success");
        }
    }

    @Override
    protected void onProgressUpdate(Integer... values) {

        UploadActivity.progressBar
                .setProgress((int) (((float) values[0] / totalFileSize) * 100));
        UploadActivity.uploadingSizeTextView.setText(nf
                .format(((float) values[0] / (1024 * 1024)))
                + " mb of "
                + nf.format(((float) totalFileSize / (1024 * 1024)))
                + " mb uploaded");
    }

    public class CustomFtpClient extends FTPClient {

        public boolean storeFile(String remote, InputStream local)
                throws IOException {
            OutputStream output;
            Socket socket;

            if ((socket = _openDataConnection_(FTPCommand.STOR, remote)) == null)
                return false;

            output = new BufferedOutputStream(socket.getOutputStream(),
                    getBufferSize());
            // if (__fileType == ASCII_FILE_TYPE)
            // output = new ToNetASCIIOutputStream(output);
            // Treat everything else as binary for now
            try {
                Util.copyStream(local, output, getBufferSize(),
                        CopyStreamEvent.UNKNOWN_STREAM_SIZE,
                        new CopyStreamListener() {
                            @Override
                            public void bytesTransferred(
                                    long totalBytesTransferred,
                                    int bytesTransferred, long streamSize) {
                                totalTransferedBytes = totalTransferedBytes
                                        + bytesTransferred;
                                publishProgress((int) totalTransferedBytes);
                                // UploadActivity.uploadingSizeTextView.setText(nf
                                // .format((totalBytesTransferred / (1024 *
                                // 1024)))
                                // + " mb of "
                                // + nf.format((totalFileSize / (1024 *
                                // 1024)))
                                // + " mb uploaded");
                            }

                            @Override
                            public void bytesTransferred(
                                    CopyStreamEvent arg0) {
                                // TODO Auto-generated method stub

                            }
                        });
                // Util.copyStream(local, output, getBufferSize(),
                // CopyStreamEvent.UNKNOWN_STREAM_SIZE, null, false);

            } catch (IOException e) {
                try {
                    socket.close();
                } catch (IOException f) {
                }
                throw e;
            }
            output.close();
            socket.close();
            return completePendingCommand();
        }
    }
}

推薦答案

一定要傳輸BINARY_FILE_TYPE中的文件.也許 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 返回 false?

Be sure to transfer files in BINARY_FILE_TYPE. Maybe ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); returns false?

順便說一句,如果您以 ASCII 模式傳輸 zip,這幾乎肯定會導致損壞.

By the way, if you transfer a zip in ASCII-mode, this will almost surely result corrupted.

這篇關于FTP zip 上傳有時會損壞的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數據庫)
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 牛皮纸|牛卡纸|进口牛皮纸|食品级牛皮纸|牛皮纸厂家-伽立实业 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 深圳昂为官网-气体分析仪,沼气分析仪,动态配气仪,气体传感器厂家 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家| 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 |