当前位置: 首页 > 面试题库 >

使用JakartaFtpWrapper的Java上传jpg-使文件不可读

洪彬
2023-03-14
问题内容

我一直在使用JakartaFtpWrapper将文件从客户端Java应用程序上传到我的服务器(出于备份目的)。

上传的文件是文本文件,png文件和jpgs。

我注意到在本地计算机上有效的jpg文件-某种程度上在服务器(通过FTPd传输到)上变得不可读(损坏的文件)。图像文件的大小与原始文件大小相似,但是有缺陷。

这是我用来将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();
    }
}

ftp代码很简单:

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传输置于二进制模式的选项,则应该这样做;我认为您的问题最可能的原因是错误的默认尝试以文本模式处理传输。如果按字节比较小图像,则应该0x0d在的旁边添加或删除回车符((char)==(char)13)0x0a。如果是这样,那就是您的问题。



 类似资料:
  • 问题内容: 我是REST API的新手。我想使用REST API将用户选择的文件上传到用户提供的路径(远程或本地路径)。我的html文件具有1个文本框和1个文件选择器。用户将在文本框中输入FilePath(本地或远程计算机文件夹位置)。请提出如何解决此问题的建议。 这是我的代码: FileUpload.html :: UploadFileService.java Web.xml 例外: 问题答案:

  • 问题内容: 我正在创建用于发送邮件的邮件页面。我需要在发送前附加一些文件。我如何使用AJAX做到这一点?最初,我需要将这些文件存储在服务器中,然后必须发送邮件。通过单个发送按钮即可完成这些操作。 问题答案: 检查以下问题: JavaScript文件上传 如何为我的Web应用程序上传类似Gmail的文件? 什么是最好的多文件JavaScript / Flash文件上传器?

  • 如何使用selenium webdriver通过窗口提示从本地上传文件? 我想执行以下操作: 点击窗口上的“浏览”选项 从窗口提示符转到保存文件的本地特定位置 选择文件,然后单击“打开”以上传文件。

  • 问题内容: 我想将文件上传到给定的文件夹。 错误是: 注意:未定义的变量:第3行的C:\ wamp \ www \ sdg \ import \ ips.php中的HTTP_POST_FILES 问题答案: 以下是一种上传文件的方法,还有许多其他方法。 正如@nordenheim所说,自PHP 4.1.0起已弃用,因此不建议使用。 PHP代码(upload.php) HTML代码启动功能 希望这可

  • 问题内容: 我已经通过ftp成功上传了文件,但是现在我需要通过SFTP进行上传。我可以成功连接到远程服务器,创建文件并写入文件,但是无法将现有文件从本地服务器上载到远程服务器。ftp_put是否不通过sftp连接触发? 我的代码用来写文件: 有没有人成功抓取本地文件并通过上述方法使用sftp上传?一个例子将不胜感激。 谢谢 问题答案: 通过上述方法(涉及sftp),您可以使用stream_copy

  • 问题内容: 我意识到我可以非常轻松地使用CURL做到这一点,但是我想知道是否可以与http流上下文一起使用,以将文件上传到远程Web服务器,如果可以,怎么办? 问题答案: 首先,Content-Type 的第一个规则是 定义一个边界 , 该边界 将用作每个部分之间的定界符(因为顾名思义,它可以包含多个部分)。边界可以是 内容正文中不包含的任何字符串 。我通常会使用时间戳记: 定义边界后,必须将其与