aber ein Problem ist ein Zweifel. Ich lade Bilder von einem JAR auf meinen Server hoch. Ich habe einen Code zu berechnen, wie lange es den ganzen Server zu klettern nahm wie folgt:berechnen ungefähre Zeit Upload-Dateien
long startTime = System.currentTimeMillis();
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
System.out.println("TIME ::: " + (float)(elapsedTime/1000) + " seg");
Jetzt dachte ich über eine ungefähre Anstiegszeit zu bekommen. Diese JAR-up Fotos von sehr guter Qualität und die Verzögerungszeit ist verlängert, möchte ich nur als zusätzliche Information für den Benutzer tun. Ich könnte mir das erste Bild ausdenken, berechnen, wie viel ich für das Hochladen dieses Bildes benötige und diesen Wert multipliziert mit dem Gesamtwert der Bilder, die der Benutzer im ausgewählten Ordner hat. Es scheint gültig zu sein, aber wollte zu dir kommen, wenn es etwas genaueres, irgendwie integriertes Java oder etwas sehr ähnliches gibt.
Im Moment habe ich auf diese Weise Bilder auf meinen Server hochladen:
public boolean uploadWithThumb(File image, String filename) {
reconnect();
try {
_sftp.cd(Config.Config.IMAGES_FOLDER);
_sftp.put(new FileInputStream(image), filename, ChannelSftp.OVERWRITE); //no overwrite (, ChannelSftp.OVERWRITE)
OutputStream output = new ByteArrayOutputStream();
//preview
if (Config.Config.WATERMARK_FILE == "" || !(new File(Config.Config.WATERMARK_FILE)).exists()) {
//no watermark
Thumbnails.of(image)
.size(Config.Config.PREVIEW_SIZE, Config.Config.PREVIEW_SIZE)
.outputQuality(Config.Config.PREVIEW_QUALITY)
.toOutputStream(output);
} else {
BufferedImage prev = Thumbnails.of(image)
.size(Config.Config.PREVIEW_SIZE, Config.Config.PREVIEW_SIZE)
.outputQuality(Config.Config.PREVIEW_QUALITY)
.asBufferedImage();
int wsize = Config.Config.PREVIEW_SIZE * 75/100;
BufferedImage water = Thumbnails.of(Config.Config.WATERMARK_FILE)
.size(wsize, wsize)
.asBufferedImage();
Thumbnails.of(prev)
.size(Config.Config.PREVIEW_SIZE, Config.Config.PREVIEW_SIZE)
.watermark(Positions.CENTER, water, 0.5f)
.outputFormat(Utils.getExtensionNoDot(image.getAbsolutePath()))
.toOutputStream(output);
}
InputStream decodedInput = new ByteArrayInputStream(((ByteArrayOutputStream) output).toByteArray());
_sftp.cd(Config.Config.PREVIEW_FOLDER);
_sftp.put(decodedInput, filename, ChannelSftp.OVERWRITE); //no overwrite (, ChannelSftp.OVERWRITE)
//thumbs
output = new ByteArrayOutputStream();
Thumbnails.of(image)
.size(Config.Config.THUMBS_SIZE, Config.Config.THUMBS_SIZE)
.toOutputStream(output);
decodedInput = new ByteArrayInputStream(((ByteArrayOutputStream) output).toByteArray());
_sftp.cd(Config.Config.THUMBS_FOLDER);
_sftp.put(decodedInput, filename, ChannelSftp.OVERWRITE); //no overwrite (, ChannelSftp.OVERWRITE)
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
Hallo! Danke für die Antwort auf Ihren Code, aber ein Fall sagte mir, dass es etwa 226 Sekunden dauern würde, während es 50 Sekunden dauerte. Ich bekomme die Dateigröße mit file.length() – hateful
die Upload-Geschwindigkeit ist relativ zu der Netzwerknutzung und den Protokollen wie TCP/IP, die ihre Sende-/Empfangsfenster variieren. Um eine genauere Schätzung zu erhalten, können Sie die Geschwindigkeit in regelmäßigen Abständen mit demselben Code neu berechnen. –