جافا تحميل صور & باستخدام JakartaFtpWrapper - يجعل الملف غير قابل للقراءة

StackOverflow https://stackoverflow.com/questions/1810309

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد تم استخدام JakartaFtpWrapper لتحميل الملفات من تطبيق جافا العميل لخدمة بلدي (لأغراض النسخ الاحتياطي).

والملفات التي يتم تحميلها هي عبارة عن ملفات نصية، بابوا نيو غينيا الملفات وJPGS.

ولقد لاحظت أن الملفات JPG التي هي صالحة على الجهاز المحلي - تصبح نوعا ما غير قابل للقراءة (ملفات الفساد) على الخادم (حيث كانوا فتب إلى). حجم ملف الصورة مشابه لنسخة أصلية واحدة، ولكن ما انشق عليه.

وهنا رمز أنا باستخدام لكتابة JPG إلى القرص المحلي:

public static void writeJpeg(BufferedImage bfImg, String fileName, float quality) throws IOException{
FileImageOutputStream output = null;
try{
    Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
    ImageWriter writer = (ImageWriter)iter.next();
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwp.setCompressionQuality(quality);   // an integer between 0 and 1     
    File file = new File(fileName);
    output = new FileImageOutputStream(file);
    writer.setOutput(output);
    IIOImage image = new IIOImage(bfImg, null, null);
    writer.write(null, image, iwp);
}
finally{
    if (output != null){
        output.close();
    }
}

ورمز بروتوكول نقل الملفات على التوالي إلى الأمام:

JakartaFtpWrapper ftpClient = new JakartaFtpWrapper();
ftpClient.connectAndLogin(FTP_URL, FTP_USER, FTP_PASSWORD);
ftpClient.setPassiveMode(true);

File[] imageFiles = folder.listFiles()


  for (int j=0; j<imageFiles.length; j++){
        File imageFile = imageFiles[j];
        if (imageFile != null && imageFile.isFile() && (FileUtils.getFileSuffix(imageFile).equals("jpg") || FileUtils.getFileSuffix(imageFile).equals("png"))){ // upload only image files
            ftpClient.uploadFile(imageFile.getAbsolutePath(), imageFile.getName());
        }
    }

وشكرا، ركض

هل كانت مفيدة؟

المحلول

وماذا تعمل على الخادم؟ هل هو "من خارج منطقة الجزاء" الخادم FTP أو أي شيء كتبته؟

والصور هي البيانات الثنائية. إذا تقدم JakartaFtpWrapper بعض خيار وضع نقل FTP إلى الوضع الثنائي، يجب عليك أن تفعل ذلك؛ أعتقد أن السبب الأكثر احتمالا لمشكلتك هو محاولة الافتراضي سيئة لمعالجة نقل في وضع النص. إذا قارنت الصور الصغيرة bytewise، يجب أن تشاهد نقل عودة ((شار) 0x0d == (شار) 13) يتم إضافتها أو إزالتها بجانب ل0x0a. إذا كان الأمر كذلك، وهذا هو مشكلتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top