SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1681|回复: 3

[原创] Hook确保上传文件大小不超过限制,

[复制链接]
发表于 2018-5-18 16:54:29 | 显示全部楼层 |阅读模式
  1. REM 随便写的脚本,有可能不严谨,生产环境要谨慎使用,需要把svnlook所在目录纳入到环境变量才可以* f: Y+ `+ v9 N1 J
  2. REM MAX_SIZE是用来设置大小上限的,单位Byte
    % s  [5 s5 w2 v( v0 K' S
  3. REM Bug:如果直接从客户端改名的话也会报超大小限制,没再多想,大家可以自己研究下。
    . J# k$ o7 s: g" t' t, @7 k9 f% r
  4. @echo off  U" q7 |& J2 R& K: d
  5. setlocal enabledelayedexpansion6 O1 a8 e8 Z, f0 ^6 _
  6. set REPO=%1
    ' D3 K/ `3 @5 N# D  H  r
  7. set TXN=%2* u/ f  n! g# I$ z; j3 Y8 @
  8. set MAX_SIZE=5242880" J+ j$ \, `, }1 g
  9. for /f "delims=" %%a in ('svnlook changed -t %TXN% %REPO%') do (- h! m- o' w! b/ P0 x; r4 N6 f1 O: H
  10.     set var=%%a
    9 w- `2 t! W; g7 x1 g$ p/ O
  11.         for /f %%i in ('svnlook filesize -t %TXN% %REPO% !var:~4!') do (  J# U7 N; ]) w& Z
  12.                 if %%i gtr %MAX_SIZE% ($ |' z! b% V' V& n6 q; ^5 T* T
  13.                         set /a size=%%i/10246 W) b: T& F( p  a* R! a3 U
  14.                         echo ### Uploading file oversize. File: !var:~4! Size: !size!KB ### 1>&2; \& k, N1 f6 P2 G2 e
  15.                         exit 1
    * w6 \, }+ r# T+ ?* N
  16.                 )2 {8 P# a% i; n4 c  }
  17.         ): E. g/ ^9 R2 _$ e! l1 z
  18. )+ W7 K& P2 _: q& F- y7 f6 v
  19. exit 0
    / J+ V0 U" w2 m9 N2 K  r
复制代码
* Z2 J6 y3 p/ f# u" e
发表于 2018-5-25 16:21:41 | 显示全部楼层
很多脚本上的MAX_SIZE=10240000; }5 f5 J" B" e3 J& F, T- T
我试了,超过10MB照样可以上传
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 16:51:37 | 显示全部楼层
本帖最后由 yxhink 于 2018-5-25 16:53 编辑
! d4 [  {1 b' t. W* d9 v
fish86 发表于 2018-5-25 16:21, q" q8 M1 [% q0 b
很多脚本上的MAX_SIZE=10240000
% B6 }+ j* n: `& Z# |: q- w我试了,超过10MB照样可以上传
我直接在环境变量里面设置了svn的bin目录,没有设置的话可能需要修改,我在我的机器上试了一下客户端和命令行可以add 但是不可以commit,你的脚本是如何设置的?发来看下如何
7 x$ K( {1 o  Q7 F% w" d2 w* `. J1 H
回复 支持 反对

使用道具 举报

发表于 2018-5-30 11:12:46 | 显示全部楼层
本帖最后由 fish86 于 2018-6-6 12:44 编辑
# v- B& m5 b4 X% V; n* `/ ^
2 }) P4 z/ C- x, x+ s% U0 a4 g7 |4 F# Z我是在linux下; F9 W9 j& i# I6 P% F; j3 |
#!/bin/sh
0 x2 [# A7 \- p/ w  @REPOS="$1"
1 E! |$ r  {4 qTXN="$2"
8 o; C/ F8 {- a6 g7 N  ?+ MMAX_SIZE=10240000
* W3 L. _. c. ]& ASVNLOOK=/usr/bin/svnlook
! f% L% [( g+ D. t6 Q3 M2 nfilesize=$($SVNLOOK cat -t $TXN $REPOS $f|wc -c)9 q7 m) X0 y, i6 r' {
if [ "$filesize" -gt "$MAX_SIZE" ]
' |# c7 X8 ~4 u9 E2 q* K# ythen
; p4 i5 M8 r2 l/ y4 y" e9 n& t1 vecho "上传的文件请不要超过13M)" >&24 l" N. \/ l4 A0 ?! R( \3 B4 b6 [
exit 1
0 O9 b7 l4 X" j! {! f1 ]fi
0 S$ [0 M* \1 }5 B/ }0 o' jdone
8 X. F3 O, c* R$ o) J- m
6 L" e" ~2 G$ b7 ]0 ]exit 0
这个脚本有bug。请勿使用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2019-3-26 19:05 , Processed in 0.063805 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表