Sub Bulky()
' Sheet Name, Cells List, Date Cell, Weeks List, Days in Week
Const cSheet As String = "Monthly Status"
Const cCells As String = "K34,K33,K32,K31,K30,K29,K28,K27,K26,K25,K24"
Const cDateCell As String = "K36"
Const cWeeks As String = "6,8,9,11,12,19,20,22,23,26,26"
Const cDays As Long = 7
Dim vntC As Variant ' Cells Array
Dim vntW As Variant ' Weeks Array
Dim RefDate1 As Date ' Date
Dim i As Long ' Arrays Row Counter
With Sheets(cSheet)
RefDate1 = .Range(cDateCell).Value
If RefDate1 = False Then
.Range(cCells).ClearContents
Else
vntC = Split(cCells, ",")
vntW = Split(cWeeks, ",")
For i = 0 To UBound(vntC)
.Range(vntC(i)).Value = RefDate1 - (cDays * CLng(Trim(vntW(i))))
Next
End If
End With
End Sub
Sub Bulky2()
' Sheet Name, Source Range, Date Cell, Weeks List, Days in Week
Const cSheet As String = "Monthly Status"
Const cCells As String = "K24:K34"
Const cDateCell As String = "K36"
Const cWeeks As String = "26,26,23,22,20,19,12,11,9,8,6"
Const cDays As Long = 7
Dim vntT As Variant ' Target Array
Dim vntW As Variant ' Weeks Array
Dim RefDate1 As Date ' Date
Dim i As Long ' Arrays Row Counter
With Sheets(cSheet)
RefDate1 = .Range(cDateCell).Value
If RefDate1 = False Then
.Range(cCells).ClearContents
Else
vntW = Split(cWeeks, ",")
ReDim vntT(1 To UBound(vntW) + 1, 1 To 1)
For i = 1 To UBound(vntT)
vntT(i, 1) = RefDate1 - (cDays * CLng(Trim(vntW(i - 1))))
Next
.Range(cCells) = vntT
End If
End With
End Sub
http://www.faqs.org/rfcs/rfc1867.html
Клиенты HTTP поощряются предоставить довольную длину для полного входа файла так, чтобы занятый сервер мог обнаружить, если предложенные данные файла являются слишком большими, чтобы быть обработанными обоснованно
Но довольная длина не требуется, таким образом, Вы не можете полагаться на нее. Кроме того, взломщик может создать неправильную довольную длину.
Считать содержание файла - единственный надежный путь. Однако если бы содержание-lenght присутствует и является слишком большим, закрыть соединение было бы разумной вещью сделать.
Кроме того, содержание отправляется как многослойное, таким образом, большинство современных платформ декодирует его сначала. Это означает, что Вы не получите поток байтов файла, пока платформа не будет сделана, который мог означать, "пока целый файл не загружается".
Я не уверен, но Вы не должны действительно полагать, что что-либо отправило в заголовке, поскольку он мог фальсифицироваться пользователем.
Это зависит от того, как сервер работает. Например, в PHP Ваш сценарий не будет работать, пока загрузка файла не завершена, таким образом, это не было бы возможно.
РЕДАКТИРОВАНИЕ: перед тем, чтобы заходить слишком далеко можно хотеть проверить этот другой ответ, полагающийся на апачскую конфигурацию: Используя jQuery, Ограничивая Размер файла Перед Загрузкой. описание ниже только полезно при реальной необходимости еще в большем количестве пользовательской обратной связи.
Да, можно получить некоторую информацию заранее, прежде, чем позволить загрузку целого файла.
Вот пример заголовка, прибывающего из формы с enctype="multipart/form-data"
атрибут:
POST / HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.7,fr-be;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------886261531333586100294758961
Content-Length: 135361
-----------------------------886261531333586100294758961
Content-Disposition: form-data; name=""; filename="IMG_1132.jpg"
Content-Type: image/jpeg
(data starts here and ends with -----------------------------886261531333586100294758961 )
У Вас есть Довольная Длина в заголовке, и дополнительно существует Тип контента в заголовке части файла (каждый файл имеет свой собственный заголовок, который является целью многослойного кодирования). Остерегайтесь этого, это - обязанность за браузер установить соответствующий Тип контента путем предположения типа файла; Вы не можете гарантировать это, но это должно быть довольно надежно для раннего отклонения (все же, необходимо проверить целый файл, когда это совершенно доступно).
Теперь, существует глюк. Я раньше фильтровал файлы изображений как этот, не на размере, а на типе контента; но поскольку Вы хотите остановить запрос как можно скорее, та же проблема возникает: браузер только получает Ваш ответ, после того как целый запрос отправлен, включая содержание формы и таким образом загруженные файлы.
Если Вы не хотите обеспеченное содержание и останавливаете загрузку, у Вас нет выбора, кроме как жестоко закрыть сокет. Пользователь будет только видеть запутывающее "соединение, сброшенное одноранговым узлом" сообщение. И это сосет, но это дизайном.
Таким образом, Вы только хотите использовать этот метод в случаях фона асинхронные проверки (использующий таймер, который проверяет поле файла). Таким образом, у меня был тот взлом:
Довольно грязный, а? Если у какого-либо из Вас есть лучшая альтернатива, я внимательно слушаю.