upload.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. std_name=''
  2. std_id=''
  3. accessid = ''
  4. accesskey = ''
  5. host = ''
  6. policyBase64 = ''
  7. signature = ''
  8. callbackbody = ''
  9. filename = ''
  10. upfilename = ''
  11. key = ''
  12. expire = 0
  13. g_object_name = ''
  14. g_object_name_type = 'local_name' //使用本地名
  15. max_file_size=0
  16. aspect_num=''
  17. now = timestamp = Date.parse(new Date()) / 1000;
  18. mode = getQueryVariable("mode");//works-上传作品,其他是上传报考材料
  19. type = getQueryVariable("type");//pdf、video
  20. aspect_id = getQueryVariable("id");
  21. f_name = getQueryVariable("f_name");
  22. f_size = getQueryVariable("f_size");
  23. var a = send_request( '../../vod/status.htm?aspect_id='+ aspect_id + "&type=" + type);
  24. if (a.errorCode=='1102')
  25. window.location = '../';
  26. if (f_name && f_size) {
  27. document.getElementById('h3').innerHTML = decodeURI(f_name) + "(" + f_size + ")";
  28. document.getElementById('selectfiles').text = "重新上传";
  29. }
  30. if (a.errorCode=='1901') {
  31. document.getElementById('h').innerText=a.errorMsg;
  32. document.getElementById('selectfiles').style.display="none";
  33. } else if(a.errorCode=='20000') {
  34. debugger;
  35. document.getElementById('h').innerHTML ="上传成功";
  36. document.getElementById('selectfiles').style.display="none";
  37. } else {
  38. //debugger;
  39. max_file_size = a.map.max_file_size;
  40. std_name = a.map.std_name;
  41. std_id = a.map.std_id;
  42. document.getElementById('h').innerHTML ="请上传文件(最大"+max_file_size+"MB)请认真核对。<br><font color='red'>未显示上传成功前请不要离开本页面,切勿切屏、息屏。</font>";
  43. var notice = "";
  44. if (aspect_id == '20201') {//造型艺术
  45. if (mode == 'works') {
  46. notice = "1.提交作品PDF文件包含:素描、速写、色彩各5幅。<br>";
  47. notice += "2.作品尺寸:不小于38cm*26.5cm(8开),不大于53cm*38cm(4开)。<br>";
  48. notice += "3.作品材料:三科均为纸质作品。其中素描、速写两科要求只能使用黑色铅笔、炭笔、炭条、炭精、橡皮;色彩要求使用水粉或丙烯。<br>";
  49. notice += "4.三科作品均以人物为主(其中色彩作品要求为人物头像,男、女青年不限)。";
  50. } else {
  51. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  52. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  53. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  54. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  55. notice += "请将以上4个文件合成一个PDF文件上传";
  56. }
  57. document.getElementById('h2').innerHTML = notice;
  58. } else if (aspect_id == '20101') {//中国画
  59. if (mode == 'works') {
  60. notice = "提交作品PDF文件包含:素描、速写各一张,书法:行书、楷书各一张:<br>";
  61. notice += "1.素描:单人半身像,画到手,男女青年不限。作品尺寸:四开,素描纸。<br>";
  62. notice += "2.速写:在四开素描纸上分两部分,一部分:全身,单人一张。一部分:场面速写,不少于三人。作品尺寸:四开,素描纸。<br>";
  63. notice += "3.书法创作:五言绝句 20字 ,楷书和行书各一张,落款。作品尺寸:四尺三裁,生宣纸。";
  64. } else {
  65. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  66. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  67. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  68. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  69. notice += "请将以上4个文件合成一个PDF文件上传";
  70. }
  71. } else if (aspect_id == '20102') {//书法学
  72. if (mode == 'works') {
  73. notice = "提交作品PDF文件:<br>";
  74. notice += "1.行书或草书创作作品一件(四尺对开竖条)。<br>";
  75. notice += "2.楷书、隶书、篆书任选一体创作一件(四尺对开竖条)。<br>";
  76. notice += "3.篆刻钤印4—6方(贴于A4纸上)。";
  77. } else {
  78. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  79. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  80. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  81. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  82. notice += "请将以上4个文件合成一个PDF文件上传";
  83. }
  84. } else if (aspect_id == '20501') {//实验艺术
  85. if (mode == 'works') {
  86. var notice = "提交作品PDF文件:<br>";
  87. notice += "1.历年创作或习作照片10张。<br>";
  88. notice += "2.以《祖国》为题创作一幅作品,形式不拘,画作、方案、实物均可,和300字左右的作品阐释。<br>";
  89. } else {
  90. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  91. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  92. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  93. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  94. notice += "请将以上4个文件合成一个PDF文件上传";
  95. }
  96. } else if (aspect_id == '20301') {//艺术设计
  97. if (mode == 'works') {
  98. notice = "提交个人作品集PDF文件包含:<br>";
  99. notice += "1.能表现造型能力的素描作品5张(8开,限黑色铅笔、炭笔、炭条)。<br>";
  100. notice += "2.能表现设计创意的作品5张,附设计说明(8开,材料不限)。<br>";
  101. notice += "3.能表现专业水平的其他作品(不超过10张),如电脑绘制或建模完成的其他与设计相关的作品。<br>";
  102. } else {
  103. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  104. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  105. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  106. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  107. notice += "请将以上4个文件合成一个PDF文件上传";
  108. }
  109. } else if (aspect_id == '20401') {//建筑学
  110. if (mode == 'works') {
  111. notice = "1.提交作品PDF文件共2幅:第1幅为针对周边某一空间环境进行色彩创作;第2幅为对前幅作品进行抽象提炼,以素描方式表现。(并附此空间环境7寸彩色照片)。<br>";
  112. notice += "2.作品尺寸:38cm*26.5cm(8开)。<br>";
  113. notice += "3.作品材料要求:第1幅色彩要求使用水粉、水彩、丙烯、油彩;第2幅素描要求只能使用黑色铅笔、炭笔、炭条。";
  114. } else {
  115. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  116. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  117. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  118. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  119. notice += "请将以上4个文件合成一个PDF文件上传";
  120. }
  121. } else if (aspect_id == '20601') {//城市艺术设计
  122. if (mode == 'works') {
  123. notice = "提交个人作品集PDF文件,作品集内包括4-6件作品,内容包括造型基础、设计创意等。设计创意需要文字阐述。";
  124. } else {
  125. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  126. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  127. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  128. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  129. notice += "请将以上4个文件合成一个PDF文件上传";
  130. }
  131. } else if (aspect_id == '20901') {//艺术与设计管理
  132. if (mode == 'works') {
  133. if (type == 'ppt') {
  134. notice = "1.请以“写意中国”为题,以中国水墨画、中国油画中的写意为研究对象,策划一个有关绘画中的写意的展览,并以PPT的形式完成一份策展报告,要求:<br>";
  135. notice += "1)PPT为25页,含封面。<br>";
  136. notice += "2)参展作品为10-15件。<br>";
  137. notice += "3)策展报告包括策展理念文字、400字展览前言、参展作品图片及文字说明、展览海报设计。<br>";
  138. notice += "4)PPT最后一页,用一句话向观众推介这个展览。<br>";
  139. } else if (type == 'video') {
  140. notice += "2.录制10分钟策展陈述,要求:<br>";
  141. notice += "1)按照你心目中策展人的形象着装。<br>";
  142. notice += "2)播放PPT,录制并讲解你的策展方案(要求人和PPT均出现在视频中,可同时出现,也可以交替出现。)";
  143. }
  144. } else {
  145. notice = "1.《2022年中央美术学院本科报考信息表》<br>";
  146. notice += "2.考生身份证件(正反面)的电子照片;<br>";
  147. notice += "3.高中在校成绩单(由学校教务部门盖章);<br>";
  148. notice += "4.相关支撑材料:获奖证书、特长证明等;<br>";
  149. notice += "请将以上4个文件合成一个PDF文件上传";
  150. }
  151. }
  152. document.getElementById('h2').innerHTML = notice;
  153. }
  154. function send_request(serverUrl)
  155. {
  156. var xmlhttp = null;
  157. if (window.XMLHttpRequest){
  158. xmlhttp=new XMLHttpRequest();
  159. } else if (window.ActiveXObject){
  160. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  161. }
  162. if (xmlhttp!=null){
  163. // serverUrl是 用户获取 '签名和Policy' 等信息的应用服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
  164. //serverUrl = 'http://10072.hmsoft.cn/bk/vod/postkey.htm'
  165. xmlhttp.open( "GET", serverUrl, false );
  166. xmlhttp.send( null );
  167. return eval ("(" + xmlhttp.responseText + ")");
  168. }else{
  169. alert("Your browser does not support XMLHTTP.");
  170. }
  171. };
  172. function check_object_radio() {
  173. var tt = document.getElementsByName('myradio');
  174. for (var i = 0; i < tt.length ; i++ )
  175. {
  176. if(tt[i].checked)
  177. {
  178. g_object_name_type = tt[i].value;
  179. break;
  180. }
  181. }
  182. }
  183. function get_signature()
  184. {
  185. // 可以判断当前expire是否超过了当前时间, 如果超过了当前时间, 就重新取一下,3s 作为缓冲。
  186. now = timestamp = Date.parse(new Date()) / 1000;
  187. if (expire < now + 3)
  188. {
  189. //debugger;
  190. document.getElementById('h3').innerHTML ="";//已上传文件名
  191. //document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '';
  192. var obj = send_request( '../../vod/postkey.htm?aspect_id='+ getQueryVariable("id")+'&std_id='+std_id+"&type=" + getQueryVariable("type"));
  193. if(obj['success']!=null){
  194. console.log(obj['errorMsg']);
  195. alert(obj['errorMsg']);
  196. if (a.errorCode=='1102')
  197. window.location = '../';
  198. return false;
  199. }
  200. host = obj['host']
  201. policyBase64 = obj['policy']
  202. accessid = obj['accessid']
  203. signature = obj['signature']
  204. expire = parseInt(obj['expire'])
  205. callbackbody = obj['callback']
  206. key = obj['dir']
  207. aspect_num = obj['aspect_num']
  208. return true;
  209. }
  210. return false;
  211. };
  212. function random_string(len) {
  213.   varlen = len || 32;
  214.   var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  215.   var maxPos = chars.length;
  216.   var pwd = '';
  217.   for (i = 0; i < len; i++) {
  218.   pwd += chars.charAt(Math.floor(Math.random() * maxPos));
  219. }
  220. return pwd;
  221. }
  222. function get_suffix(filename) {
  223. pos = filename.lastIndexOf('.')
  224. suffix = ''
  225. if (pos != -1) {
  226. suffix = filename.substring(pos)
  227. }
  228. return suffix;
  229. }
  230. function get_name(filename) {
  231. pos = filename.lastIndexOf('.')
  232. f = ''
  233. if (pos != -1) {
  234. f = filename.substring(0,pos)
  235. }
  236. return f;
  237. }
  238. function calculate_object_name(filename)
  239. {
  240. if (g_object_name_type == 'local_name')
  241. {
  242. g_object_name += "${filename}"
  243. }
  244. else if (g_object_name_type == 'random_name')
  245. {
  246. suffix = get_suffix(filename)
  247. g_object_name = key + random_string(10) + suffix
  248. }
  249. else if (g_object_name_type == 'upfilename')
  250. {
  251. suffix = get_suffix(filename)
  252. g_object_name = key + upfilename + suffix
  253. }
  254. return ''
  255. }
  256. function get_uploaded_object_name(filename)
  257. {
  258. if (g_object_name_type == 'local_name')
  259. {
  260. tmp_name = g_object_name
  261. tmp_name = tmp_name.replace("${filename}", filename);
  262. return tmp_name
  263. }
  264. else if(g_object_name_type == 'random_name')
  265. {
  266. return g_object_name
  267. }
  268. }
  269. function set_upload_param(up, filename, ret)
  270. {
  271. if (ret == false)
  272. {
  273. ret = get_signature(filename)
  274. //判断
  275. }
  276. if (ret){
  277. g_object_name = key;
  278. if (filename != '') {
  279. suffix = get_suffix(filename)
  280. calculate_object_name(filename)
  281. }
  282. new_multipart_params = {
  283. 'key' : g_object_name,
  284. 'policy': policyBase64,
  285. 'OSSAccessKeyId': accessid,
  286. 'success_action_status' : '200', //让服务端返回200,不然,默认会返回204
  287. 'callback' : callbackbody,
  288. 'signature': signature,
  289. };
  290. up.setOption({
  291. 'url': host,
  292. 'multipart_params': new_multipart_params
  293. });
  294. up.start();
  295. }
  296. }
  297. function getQueryVariable(variable)
  298. {
  299. var query = window.location.search.substring(1);
  300. var vars = query.split("&");
  301. for (var i=0;i<vars.length;i++) {
  302. var pair = vars[i].split("=");
  303. if(pair[0] == variable){return pair[1];}
  304. }
  305. return(false);
  306. }
  307. var uploader = new plupload.Uploader({
  308. runtimes : 'html5,flash,silverlight,html4',
  309. browse_button : 'selectfiles',
  310. multi_selection: false,
  311. container: document.getElementById('container'),
  312. flash_swf_url : 'lib/plupload-2.1.2/js/Moxie.swf',
  313. silverlight_xap_url : 'lib/plupload-2.1.2/js/Moxie.xap',
  314. url : 'http://oss.aliyuncs.com',
  315. filters: {
  316. mime_types : [ //只允许上传图片和zip文件
  317. { title : "mp4 files", extensions : "pdf,ppt,pptx,mp4,mov,flv" }
  318. ],
  319. max_file_size :'1000mb', //最大上传
  320. prevent_duplicates : true //不允许选取重复文件
  321. },
  322. init: {
  323. PostInit: function() {
  324. document.getElementById('ossfile').innerHTML = '';
  325. },
  326. FilesAdded: function(up, files) {
  327. debugger;
  328. console.log("FilesAdded"+files.length);
  329. var file = files[0];
  330. if (type == 'pdf' && file.name.toLowerCase().indexOf('pdf') == -1) {
  331. alert("只能选择pdf!");
  332. return;
  333. } else if (type == 'ppt' && file.name.toLowerCase().indexOf('ppt') == -1) {
  334. alert("只能选择ppt[ppt,pptx]!");
  335. return;
  336. } else if (type == 'video' && file.name.toLowerCase().indexOf('mp4') == -1
  337. && file.name.toLowerCase().indexOf('mov') == -1
  338. && file.name.toLowerCase().indexOf('flv') == -1) {
  339. alert("只能选择视频[mp4,mov,flv]!");
  340. return;
  341. }
  342. plupload.each(files, function(file) {
  343. document.getElementById('ossfile').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ')<b></b>'
  344. +'<div class="progress"><div class="progress-bar" style="width: 0%"></div></div>'
  345. +'</div>';
  346. });
  347. set_upload_param(up, '', false);
  348. },
  349. BeforeUpload: function(up, file) {
  350. //debugger;
  351. set_upload_param(up, file.name, true);
  352. },
  353. UploadProgress: function(up, file) {
  354. var d = document.getElementById(file.id);
  355. d.getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
  356. var prog = d.getElementsByTagName('div')[0];
  357. var progBar = prog.getElementsByTagName('div')[0]
  358. progBar.style.width= 2*file.percent+'px';
  359. progBar.setAttribute('aria-valuenow', file.percent);
  360. },
  361. FileUploaded: function(up, file, info) {
  362. if (info.status == 200)
  363. {
  364. //debugger;
  365. document.getElementById('h3').innerHTML ="";//已上传文件名
  366. document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '文件已经上传成功';
  367. document.getElementById('selectfiles').text = "重新上传";
  368. setTimeout(function() {
  369. document.getElementById('back').click();
  370. }, 1000)
  371. }
  372. else if (info.status == 203)
  373. {
  374. document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '上传成功,但是oss访问用户设置的上传回调服务器失败,失败原因是:' + info.response;
  375. }
  376. else
  377. {
  378. document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
  379. }
  380. },
  381. Error: function(up, err) {
  382. //debugger;
  383. if (err.code == -600) {
  384. document.getElementById('console').appendChild(document.createTextNode("\n上传的文件太大了,最大允许上传"+max_file_size+"MB"));
  385. }
  386. else if (err.code == -601) {
  387. document.getElementById('console').appendChild(document.createTextNode("\n选择的文件类型不正确"));
  388. }
  389. else if (err.code == -602) {
  390. document.getElementById('console').appendChild(document.createTextNode("\n选择文件重复"));
  391. }
  392. else
  393. {
  394. document.getElementById('console').appendChild(document.createTextNode("\nError xml:" + err.response));
  395. }
  396. }
  397. }
  398. });
  399. uploader.init();
  400. //console.log( uploader.settings.filters.max_file_size);