有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何将HTML5文件类型转换为java。伊奥。在瓦丁归档?

public void drop(DragAndDropEvent dropEvent) {

        WrapperTransferable tr = (WrapperTransferable) dropEvent.getTransferable();
        Html5File[] files = tr.getFiles();
        if (files != null) {
            for (final Html5File html5File : files) {
                final String fileName = html5File.getFileName();

                final ByteArrayOutputStream bas = new ByteArrayOutputStream();
                StreamVariable streamVariable = new StreamVariable() {

                        public OutputStream getOutputStream() {
                            return bas;
                        }
                        public boolean listenProgress() {
                            return false;
                        }
                        public void onProgress(StreamingProgressEvent event) {
                        }
                        public void streamingStarted(
                                StreamingStartEvent event) {
                        }
                        public void streamingFinished(
                                StreamingEndEvent event) {
                            progress.setVisible(false);
                            showFile(fileName, html5File.getType(), bas);
                        }
                        public void streamingFailed(
                                StreamingErrorEvent event) {
                            progress.setVisible(false);
                        }
                        public boolean isInterrupted() {
                            return false;
                        }
                    };
                    html5File.setStreamVariable(streamVariable);
                    progress.setVisible(true);


                    encryptAndUploadFile( ***html5File****, fileName, folderName);

//如何将这个HTML5文件转换为java。伊奥。因为我有一个encryptAndUploadFile方法,它接受File参数

                }
            }
     }

//encryptAndUploadFile()方法

  public void encryptAndUploadFile(File file, String fileName,String folderName) 
  {
    String  m_strWebFilePath = finalSourcepath + fileName;
    File m_objFile=null;
    byte[] sourceFileByte = Encryption.aesEncrypt(com.saterisystems.common.utils.FileUtils.getImageIntoByteArray(file), GlobalConstants.KEY.getBytes(), GlobalConstants.IV.getBytes());
    ......
    ......
    ......

请建议我如何将这个HTML5文件类型的对象类型转换为java。伊奥。文件类型对象


共 (1) 个答案

  1. # 1 楼答案

    编辑: 我再次阅读了他们的文档和演示代码。当使用Vaadin拖放文件时,实际的上传似乎由它来处理。真正的问题是,您希望在它们进入服务器(从您想要调用的方法)之前对它们进行加密

    我想我找到了一种加密上传的方法。请看下面演示中的代码http://demo.vaadin.com/sampler/#ui/data-input/other/drop-items

    if (files != null) {
        for (final Html5File html5File : files) {
            final String fileName = html5File.getFileName();
    
            if (html5File.getFileSize() > FILE_SIZE_LIMIT) {
                Notification
                    .show("File rejected. Max 2Mb files are accepted by Sampler",
                                              Notification.Type.WARNING_MESSAGE);
            } else {
    
                final ByteArrayOutputStream bas = new ByteArrayOutputStream();
                final StreamVariable streamVariable = new StreamVariable() {
    
                     @Override
                     public OutputStream getOutputStream() {
                          return bas;
                     }
    
                     @Override
                     public boolean listenProgress() {
                          return false;
                     }
    
                     @Override
                     public void onProgress(
                          final StreamingProgressEvent event) {
                     }
    
                     @Override
                     public void streamingStarted(
                          final StreamingStartEvent event) {
                     }
    
                     @Override
                     public void streamingFinished(
                          final StreamingEndEvent event) {
                          progress.setVisible(false);
                          showFile(fileName, html5File.getType(), bas);
                     }
    
                     @Override
                     public void streamingFailed(
                          final StreamingErrorEvent event) {
                          progress.setVisible(false);
                     }
    
                     @Override
                     public boolean isInterrupted() {
                          return false;
                     }
                 };
                 html5File.setStreamVariable(streamVariable);
                 progress.setVisible(true);
            }
        }
    
    } else {
         final String text = tr.getText();
         if (text != null) {
             showText(text);
         }
    }
    

    它似乎要求您为要发送到服务器的数据提供输出流。您可以对ByteArrayOutputStream类进行子类化,并重写write(byte[]b)方法,以便在数据到达超类write方法之前对其进行加密,如下所示:

    public class EncryptedArrayOutputStream extends ByteArrayOutputStream {
    
    @Override
    public void write(byte[] b) throws IOException{
        byte[] encrypted = encrypt(b);
        super.write(encrypted);
    
    }
    
    private byte[] encrypt(byte[] bytes) {
    
        byte[] encrypted = new byte[bytes.length]; // This also might not be the size depending on the algorithm you choose
        // Your algorithm here....
        return encrypted;
    }
    }