Java - Открытый URI данных с браузером [дубликат]

@asciimike в twitter является разработчиком правил безопасности firebase. Он говорит, что в настоящее время нет способа обеспечить уникальность ключа в документе. https://twitter.com/asciimike/status/937032291511025664

Так как firestore основан на Google Cloud datastore, он наследует эту проблему. Это длительный запрос с 2008 года. https://issuetracker.google.com/issues/35875869#c14

Однако вы можете достичь своей цели, используя firebase functions и некоторые строгие security rules.

Вы можете просмотреть все предлагаемое решение на носителе. https://medium.com/@jqualls/firebase-firestore-unique-constraints-d0673b7a4952

12
задан Andrew Thompson 21 February 2013 в 10:13
поделиться

2 ответа

например. для изображения:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
    ImageIO.write(image, "png", baos);
} catch (IOException e) {
    e.printStackTrace();
}
String imageString = "data:image/png;base64," +
    DatatypeConverter.printBase64Binary(baos.toByteArray());

Пример

Выполните приведенный ниже код. Если FF является браузером по умолчанию, вы можете увидеть что-то вроде этого:

Data URI image in FF [/g1]

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.xml.bind.DatatypeConverter;
import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;
import java.io.*;

public class DataUriConverter {

    public static void main(String[] args) throws Exception {
        int sz = 200;
        BufferedImage image = new BufferedImage(
                sz, sz, BufferedImage.TYPE_INT_ARGB);

        // paint the image..
        Graphics2D g = image.createGraphics();
        g.setRenderingHint(
                RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(Color.BLUE);
        for (int ii = 0; ii < sz; ii += 5) {
            g.drawOval(ii, ii, sz - ii, sz - ii);
        }
        g.dispose();

        // convert the image
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(image, "png", baos);
        System.out.println("baos.toByteArray() " + baos.toByteArray());
        System.out.println("baos.toByteArray().length " + baos.toByteArray().length);
        String data = DatatypeConverter.printBase64Binary(baos.toByteArray());
        String imageString = "data:image/png;base64," + data;
        String html =
                "<html><body><img src='" + imageString + "'></body></html>";

        // write the HTML
        File f = new File("image.html");
        FileWriter fw = new FileWriter(f);
        fw.write(html);
        fw.flush();
        fw.close();

        // display the HTML
        Desktop.getDesktop().open(f);
    }
}
14
ответ дан Andrew Thompson 24 August 2018 в 21:09
поделиться

Вот мой пример.

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import javax.xml.bind.DatatypeConverter;

public class ToDataURI {

    public static void main(String[] args) throws IOException {

        // source file
        File file = new File("movie.mp4");

        // check content type of the file
        String contentType = Files.probeContentType(file.toPath());

        // read data as byte[]
        byte[] data = Files.readAllBytes(file.toPath());

        // convert byte[] to base64(java7)
        String base64str = DatatypeConverter.printBase64Binary(data);

        // convert byte[] to base64(java8)
        // String base64str = Base64.getEncoder().encodeToString(data);

        // cretate "data URI"
        StringBuilder sb = new StringBuilder();
        sb.append("data:");
        sb.append(contentType);
        sb.append(";base64,");
        sb.append(base64str);

        System.out.println(sb.toString());

    }
}

Обработка потока

  1. Проверка содержимого файлаType
  2. Чтение данных файла в байт []
  3. Преобразование байт [] данных в base64
  4. Создание формата данных URI

Вы можете получить как

data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21p....
0
ответ дан riversun 24 August 2018 в 21:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: