Cach├й рд╕рд░реНрд╡рд░ рдкрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдХреИрдЪ рдФрд░ рдПрдирд╕реЗрдВрдмрд▓ рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рдЕрдХреНрд╕рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ "рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб" рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ SQL.ru рдкрд░ Cach├й рдлреЛрд░рдо рдкрд░, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╕рд╡рд╛рд▓ рдлрд┐рд░ рд╕реЗ рдЙрдареЗред рдореИрдВрдиреЗ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ CSP рдФрд░ ZEN рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдЙрдкрд▓рдмреНрдз рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╡реЗ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЙрдкрд▓рдмреНрдз рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рднрд┐рдиреНрди рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднреАред рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ HTML /> рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдлреНрд▓реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред HTML5 рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ FileAPI рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддреИрдпрд╛рд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ - рдлрд╝рд╛рдЗрдирдЕрдкрд▓реЛрдбрд░ ред рджреГрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдврд╛рдВрдЪреЗ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдШрдЯрдХ рдореЗрдВ, рдХрдИ рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╛рдЗрд▓рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рдЧрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред
рд╣рдорд╛рд░реЗ CSP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд░реВрдЯ рдореЗрдВ рдлрд╛рдЗрдирдкреЙрдбрд░ рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, USER , рдбрд┐рдлрд╝реЙрд▓реНрдЯ CSP рдПрдкреНрд▓рд┐рдХреЗрд╢рди /csp/user , Cach├й рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрде C:\InterSystems\Cache\CSP\user ред
рд╕реАрдПрд╕рдкреА рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рд╡рд░реНрдЧ habr.CSPFileUpload% CSP.Page рдмрдврд╝рд╛рддрд╛ рд╣реИ
{

ClassMethod OnPage () % рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ
{
#; рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдорд┐рд▓реА
рдЕрдЧрд░ $ d ( % request ред рдбреЗрдЯрд╛ ( "рд▓реЛрдбрдлрд╝рд╛рдЗрд▓" )) {
рдЕрдЧрд░ $ lv ( % loadFileSuccess ), $ lg ( % loadFileSuccess , 1) {
#; рдлрд╝рд╛рдЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереА, рд╣рдо рд╕рдлрд▓ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рдЖрдХрд╛рд░ рднреЗрдЬреЗрдВрдЧреЗ
рдбрдмреНрд▓реНрдпреВ "{" рд╕рдлрд▓рддрд╛ "": рд╕рдЪ, ""
"" "рдлрд╝рд╛рдЗрд▓рдирд╛рдо" ":" " _ $ lg ( % loadFileSuccess , 2) _ " "" "," ,
"" "рдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВ" ":" " _ $ lg ( % loadFileSuccess , 3) _ " _ "" ""
} {
#; рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ
рдбрдмреНрд▓реНрдпреВ "{" рддреНрд░реБрдЯрд┐ "": "" рддреНрд░реБрдЯрд┐ рд▓реЛрдб рдлрд╝рд╛рдЗрд▓ ""} "
}
q $ $ $ рдУрдХреЗ
}
#; рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП HTML рдлреЙрд░реНрдо
& html << ! DOCTYPE HTML>
< html >
<! - рдлрд╛рдЗрди рдЕрдкрд▓реЛрдбрд░ рдХреА рд╢реИрд▓реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ ->
< рд▓рд┐рдВрдХ href = "fileuploader.css" rel = "рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ" рдкреНрд░рдХрд╛рд░ = "рдЯреЗрдХреНрд╕реНрдЯ / рд╕реАрдПрд╕рдПрд╕" >
<! - рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╢реИрд▓рд┐рдпреЛрдВ, рджреГрд╢реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП ->
< рд▓рд┐рдВрдХ href = "рдмреВрдЯрд╕реНрдЯреНрд░реИрдк / css / bootstrap.min.css" rel = "рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ" рдкреНрд░рдХрд╛рд░ = "рдЯреЗрдХреНрд╕реНрдЯ / рд╕реАрдПрд╕рдПрд╕" >
< рд▓рд┐рдВрдХ href = "рдмреВрдЯрд╕реНрдЯреНрд░реИрдк / css / рдмреВрдЯрд╕реНрдЯреНрд░реИрдк-рдЙрддреНрддрд░рджрд╛рдпреА. min.css " rel = "рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ" рдкреНрд░рдХрд╛рд░ = "рдЯреЗрдХреНрд╕реНрдЯ / рд╕реАрдПрд╕рдПрд╕" >
< рд╢рд░реАрд░ >
<! - рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ ->
< div id = "рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░" рд╢реИрд▓реА = 'рдЪреМрдбрд╝рд╛рдИ: 400px' > </ div >

<! - jQuery ->
< script type = "text / javascript" src = "jquery.js" > </ script >
<! - рдлрд╛рдЗрди рдЕрдкрд▓реЛрдбрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ->
< script type = "text / javascript" src = "fileuploader.js" > </ script >
<! - рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ ->
< script type = "text / javascript" src = "bootstrap / js / bootstrap.min.js" > </ script >
< script type = "text / javascript" >
// рдлрд╛рдЗрди рдЕрдкрд▓реЛрдбрд░ рдЪрд▓рд╛рдПрдВ
$ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝)ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ( рдлрд╝рдВрдХреНрд╢рди ) ({
var рдердВрдмрдиреЗрд▓рдЕрдкрд▓реЛрдбрд░ = рдирдпрд╛ qq.FileUploader ({
рддрддреНрд╡: $ ( '# рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░' ) [ 0 ], // рд╣рдорд╛рд░рд╛ рддрддреНрд╡
// рдпрд╣рд╛рдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рд╣реИ
рдХреНрд░рд┐рдпрд╛: '# ( .. % ClassName (1) _ ".cls" ) #'
// рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛
рдкрд░рдо: {
рд▓реЛрдбрдлрд╛рдЗрд▓: рез
}
// рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
рдХрдИ: рд╕рдЪ,
// рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░
рдЕрдиреБрдорддрд┐рдпрд╛рдБ: [ 'jpeg' , 'jpg' , 'gif' , 'png' ],
// рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рд╕реАрдорд╛
sizeLimit: 5120000 ,
onComplete: рдлрд╝рдВрдХреНрд╢рди (рдЖрдИрдбреА, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, responseJSON) {
рдЕрдЧрд░ (responseJSON.success) {
// рдлрд╝рд╛рдЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреЗрдЬреА рдЧрдИ, рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ
$ ( '# рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░' )
.append ( '<div> <span> рднрд░реА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓:' + responseJSON.fileName + '</ a>> +
'<span> рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░:' + responseJSON.fileSize + '</ span> </ div>' );
}
}
});
});
</ script >
</ рд╢рд░реАрд░ >
</ html >>
$ $ $ $ рдареАрдХ рд╣реИ
}

ClassMethod OnPreHTTP () % рдмреВрд▓рд┐рдпрди рдХреЗ рд░реВрдк рдореЗрдВ [ ServerOnly = 1]
{
#; рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╣реЛ рдЧрдИ
рдЕрдЧрд░ $ d ( % request ред рдбреЗрдЯрд╛ ( "рд▓реЛрдбрдлрд╝рд╛рдЗрд▓" )) {
s % loadFileSuccess = 0
#; рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб
s рдлрд╝реАрд▓реНрдбрдирд╛рдо = "рдХрд╝рдлрд╝рд┐рд▓реЗ"
#; рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдореИрдВ % рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ ред IsDefinedMimeData ( рдлрд╝реАрд▓реНрдбрдирд╛рдо , 1) {
s рдХрдВрдЯреЗрдВрдЯ рдЯрд╛рдЗрдк = % рдЕрдиреБрд░реЛрдз ред рдорд╛рдЗрдордбрд╛рдЯрд╛ ( рдлреАрд▓реНрдбрдиреЗрдо , 1)ред ContentType
s рд╕рд╛рдордЧреНрд░реА = % рдЕрдиреБрд░реЛрдз ред рдорд╛рдЗрдордбрд╛рдЯрд╛ ( рдлреАрд▓реНрдбрдиреЗрдо , 1)
} {
s рдХрдВрдЯреЗрдВрдЯ рдЯрд╛рдЗрдк = % рдЕрдиреБрд░реЛрдз ред ContentType
s рд╕рд╛рдордЧреНрд░реА = % рдЕрдиреБрд░реЛрдз ред рд╕рд╛рдордЧреНрд░реА
}
s : FieldName '= "" fileName = $ g ( % рдЕрдиреБрд░реЛрдз ред рдбреЗрдЯрд╛ ( рдлрд╝реАрд▓реНрдбрдирд╛рдо , 1))
#; рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╢реВрдиреНрдп рдЖрдХрд╛рд░ рдХреА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ
рдореИрдВ $ isobject ( рд╕рд╛рдордЧреНрд░реА ), рд╕рд╛рдордЧреНрд░реА ред рд╕рд╛рдЗрдЬрд╝ > 0 s % loadFileSuccess = $ lb (1, $ g ( рдлрд╝рд╛рдЗрд▓рдирд╛рдо ), рд╕рд╛рдордЧреНрд░реА рдЖрдХрд╛рд░ ) ред
рдХреНрд╖ рез
}
рдХреНрд╖ рез
}

}


рдиреАрдЪреЗ ZEN рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдлрд╝реЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрд╝реЗрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг
/// рдкреЗрдЬ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛: рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рд╡рд░реНрдЧ habr.ZENFileUpload% ZEN.Component.page рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
{

/// рдирдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдирд╛рдоред
рдкреИрд░рд╛рдореАрдЯрд░ PAGENAME = "рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓рдЕрдк рд▓реЛрдбрд░" ;

/// рд╢реИрд▓рд┐рдпрд╛рдБ
STRING рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ CSSINCLUDES = "fileuploader.css, bootstrap / css / bootstrap.min.css, bootstrap / css / bootstrap-responsive.min.css" ;

/// рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ
рдкреИрд░рд╛рдореАрдЯрд░ JSINCLUDES STRING = "jquery.js, fileuploader.js, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк / js / bootstrap.min.js" рдХреЗ рд░реВрдк рдореЗрдВ ;

/// рдпрд╣ XML рдмреНрд▓реЙрдХ рдЗрд╕ рдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
XData рд╕рд╛рдордЧреНрд░реА [ XMLNamespace = " www.intersystems.com/zen" ]
{
< рдкреЗрдЬ xmlns = " www.intersystems.com/zen" рд╢реАрд░реНрд╖рдХ = "" >
<! - рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдлрд╝реАрд▓реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ ->
< pane id = "рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░" рдЪреМрдбрд╝рд╛рдИ = "400px" />
</ рдкреГрд╖реНрда >
}

/// рдкреЗрдЬ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд░рди рдХрд░реЗрдВ
ClientMethod onloadHandler () [ рднрд╛рд╖рд╛ = рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ]
{
var рдердВрдмрдиреЗрд▓рдЕрдкрд▓реЛрдбрд░ = рдирдпрд╛ qq.FileUploader ({
рддрддреНрд╡: $ ( '# рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░' ) [ 0 ], // рд╣рдорд╛рд░рд╛ рддрддреНрд╡
// рдпрд╣рд╛рдВ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдбрд░ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рд╣реИ
рдХрд╛рд░реНрд░рд╡рд╛рдИ: '?' ред
// рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛
рдкрд░рдо: {
рд▓реЛрдбрдлрд╛рдЗрд▓: рез
}
// рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
рдХрдИ: рд╕рдЪ,
// рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░
рдЕрдиреБрдорддрд┐рдпрд╛рдБ: [ 'jpeg' , 'jpg' , 'gif' , 'png' ],
// рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рд╕реАрдорд╛
sizeLimit: 5120000 ,
onComplete: рдлрд╝рдВрдХреНрд╢рди (рдЖрдИрдбреА, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо, responseJSON) {
рдЕрдЧрд░ (responseJSON.success) {
// рдлрд╝рд╛рдЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рднреЗрдЬреА рдЧрдИ, рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ
$ ( '# рдердВрдмрдиреЗрд▓-рдареАрдХ-рдЕрдкрд▓реЛрдбрд░' )
.append ( '<div> <span> рднрд░реА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓:' + responseJSON.fileName + '</ a>> +
'<span> рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░:' + responseJSON.fileSize + '</ span> </ div>' );
}
}
});
}

/// рдЬрд╝реЗрди рдкреГрд╖реНрда рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
/// рдЙрдкрд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ред <br/>
/// рдЗрд╕реЗ </ em> </ em> рдорд╛рдирдХ рдЬрд╝реЗрди рдкреНрд░реА-HTTP рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
ClassMethod % OnPreHTTP () % Boolean рдХреЗ рд░реВрдк рдореЗрдВ [ ServerOnly = 1]
{
#; рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╣реЛ рдЧрдИ
рдЕрдЧрд░ $ d ( % request ред рдбреЗрдЯрд╛ ( "рд▓реЛрдбрдлрд╝рд╛рдЗрд▓" )) {
s % loadFileSuccess = 0
#; рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб
s рдлрд╝реАрд▓реНрдбрдирд╛рдо = "рдХрд╝рдлрд╝рд┐рд▓реЗ"
#; рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдореИрдВ % рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ ред IsDefinedMimeData ( рдлрд╝реАрд▓реНрдбрдирд╛рдо , 1) {
s рдХрдВрдЯреЗрдВрдЯ рдЯрд╛рдЗрдк = % рдЕрдиреБрд░реЛрдз ред рдорд╛рдЗрдордбрд╛рдЯрд╛ ( рдлреАрд▓реНрдбрдиреЗрдо , 1)ред ContentType
s рд╕рд╛рдордЧреНрд░реА = % рдЕрдиреБрд░реЛрдз ред рдорд╛рдЗрдордбрд╛рдЯрд╛ ( рдлреАрд▓реНрдбрдиреЗрдо , 1)
} {
s рдХрдВрдЯреЗрдВрдЯ рдЯрд╛рдЗрдк = % рдЕрдиреБрд░реЛрдз ред ContentType
s рд╕рд╛рдордЧреНрд░реА = % рдЕрдиреБрд░реЛрдз ред рд╕рд╛рдордЧреНрд░реА
}
s : FieldName '= "" fileName = $ g ( % рдЕрдиреБрд░реЛрдз ред рдбреЗрдЯрд╛ ( рдлрд╝реАрд▓реНрдбрдирд╛рдо , 1))
#; рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╢реВрдиреНрдп рдЖрдХрд╛рд░ рдХреА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ
рдореИрдВ $ isobject ( рд╕рд╛рдордЧреНрд░реА ), рд╕рд╛рдордЧреНрд░реА ред рд╕рд╛рдЗрдЬрд╝ > 0 s % loadFileSuccess = $ lb (1, $ g ( рдлрд╝рд╛рдЗрд▓рдирд╛рдо ), рд╕рд╛рдордЧреНрд░реА рдЖрдХрд╛рд░ ) ред
рдХреНрд╖ рез
}
рдХреНрд╖ рез
}

/// рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
рд╡рд┐рдзрд┐ % DrawHTMLPage ()
{
#; рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗ
рдЕрдЧрд░ $ d ( % request ред рдбреЗрдЯрд╛ ( "рд▓реЛрдбрдлрд╝рд╛рдЗрд▓" )) {
рдЕрдЧрд░ $ lv ( % loadFileSuccess ), $ lg ( % loadFileSuccess , 1) {
#; рдлрд╝рд╛рдЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереА, рд╣рдо рд╕рдлрд▓ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдФрд░ рдЖрдХрд╛рд░ рднреЗрдЬреЗрдВрдЧреЗ
рдбрдмреНрд▓реНрдпреВ "{" рд╕рдлрд▓рддрд╛ "": рд╕рдЪ, ""
"" "рдлрд╝рд╛рдЗрд▓рдирд╛рдо" ":" " _ $ lg ( % loadFileSuccess , 2) _ " "" "," ,
"" "рдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВ" ":" " _ $ lg ( % loadFileSuccess , 3) _ " _ "" ""
} {
#; рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ
рдбрдмреНрд▓реНрдпреВ "{" рддреНрд░реБрдЯрд┐ "": "" рддреНрд░реБрдЯрд┐ рд▓реЛрдб рдлрд╝рд╛рдЗрд▓ ""} "
}
рдХреНрд╖
}
#; рдЕрдиреНрдпрдерд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреГрд╖реНрда рдбреНрд░рд╛ рдХрд░реЗрдВред
d ## рд╕реБрдкрд░ ()
}

/// рдкреГрд╖реНрда рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
BOOLEAN = 0 рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╢реЛрд╕реНрдЯреИрдЯ ;

}

рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд▓рд┐рддрдЙрдк рд▓реЛрдбрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╕рд╛рде рд╣реА рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк, рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред
рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдФрд░ рдлрд╛рдЗрди рдЕрдкрд▓реЛрджрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕реНрд░реЛрдд

Source: https://habr.com/ru/post/In158681/


All Articles