Как получить размер файла прежде, чем загрузить его?

Вам нужно сначала создать текстуру с изображением, а затем создать retryButton с этой текстурой как SKSPriteNode, должно работать следующее:

    var retryButton: SKSpriteNode!
    let texture = SKTexture(imageNamed: "retryImage")
    retryButton = SKSpriteNode(texture: texture)
    retryButton.color = .white
    retryButton.position = CGPoint(x: frame.midX, y: frame.midY -   100)
    self.addChild(retryButton)
6
задан Shog9 19 March 2010 в 03:43
поделиться

5 ответов

Это - тяжелая проблема. Необходимо сделать это с Ajax и использовать заголовки размера файла, отправленные браузером на сервер по запросу POST.

Библиотека UI Yahoo имеет инструмент для помощи с этим. Загрузчик YUI

2
ответ дан 17 December 2019 в 20:35
поделиться

JavaScript не может сделать этого. Это имело бы серьезные проблемы безопасности. Возможно, флэш-память может все же.

0
ответ дан 17 December 2019 в 20:35
поделиться

Не может быть надежно сделан с JavaScript для всех браузеров, но можно ограничить общий размер отправленных данных из web.config

0
ответ дан 17 December 2019 в 20:35
поделиться

У Вас действительно нет большого количества опций при использовании традиционного элемента управления вводом файла. Вы не можете проверить его на стороне клиента, и это поразит Ваш настроенный maxRequestLength, прежде чем Вы получите возможность проверить его сторона сервера. Можно поймать исключение, которое происходит, когда maxRequestLength превышен все же.

0
ответ дан 17 December 2019 в 20:35
поделиться

Короткий ответ: Нет, необходимо обработать это на сервере.

Длинный ответ: Не надежный. С IE Вы могли сделать что-то как:

function checkSize(filespec) {
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.size;
// Do something with var s
}

Но это может легко быть comprimised настройками безопасности браузера или использованием другого браузера или платформы.

0
ответ дан 17 December 2019 в 20:35
поделиться
Другие вопросы по тегам:

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