Guest User

Untitled

a guest
Feb 19th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | None | 0 0
  1. // ==========================================================================
  2. // Upload.SampleController
  3. // ==========================================================================
  4.  
  5. require('swfupload');
  6. require('fileprogress');
  7. require('core');
  8.  
  9. /** @class
  10.  
  11. (Document Your View Here)
  12.  
  13. @extends SC.Object
  14. @author AuthorName
  15. @version 0.1
  16. @static
  17. */
  18. Upload.sampleController = SC.Object.create(
  19. /** @scope Upload.sampleController */ {
  20.  
  21. init: function(){
  22. var swfu;
  23.  
  24. SC.callOnLoad (function () {
  25. swfu = new SWFUpload({
  26. // Backend settings
  27. upload_url: "../formsdemo/upload.php", // Relative to the SWF file, you can use an absolute URL as well.
  28. file_post_name: "resume_file",
  29.  
  30. // Flash file settings
  31. file_size_limit : "10240", // 10 MB
  32. file_types : "*.*", // or you could use something like: "*.doc;*.wpd;*.pdf",
  33. file_types_description : "All Files",
  34. file_upload_limit : "0", // Even though I only want one file I want the user to be able to try again if an upload fails
  35. file_queue_limit : "1", // this isn't needed because the upload_limit will automatically place a queue limit
  36.  
  37. // Event handler settings
  38. swfupload_loaded_handler : swfUploadLoaded,
  39.  
  40. //file_dialog_start_handler : fileDialogStart, // I don't need to override this handler
  41. file_queued_handler : fileQueued,
  42. file_queue_error_handler : fileQueueError,
  43. file_dialog_complete_handler : fileDialogComplete,
  44.  
  45. //upload_start_handler : uploadStart, // I could do some client/JavaScript validation here, but I don't need to.
  46. upload_progress_handler : uploadProgress,
  47. upload_error_handler : uploadError,
  48. upload_success_handler : uploadSuccess,
  49. upload_complete_handler : uploadComplete,
  50.  
  51. // Flash Settings
  52. flash_url : static_url('swfupload_f9'), // Relative to this file
  53.  
  54. // UI settings
  55. swfupload_element_id : "flashUI", // setting for the graceful degradation plugin
  56. degraded_element_id : "degradedUI",
  57.  
  58. custom_settings : {
  59. progress_target : "fsUploadProgress",
  60. upload_successful : false
  61. },
  62.  
  63. // Debug settings
  64. debug: false
  65. });
  66. });
  67. },
  68.  
  69. buttonPressed: function() {
  70. fileBrowse.apply(this.swfu);
  71. alert('hehehe');
  72. },
  73.  
  74. swfUploadLoaded: function(){
  75. var btnSubmit = document.getElementById("btnSubmit");
  76.  
  77. btnSubmit.onclick = doSubmit;
  78. btnSubmit.disabled = true;
  79. },
  80.  
  81. fileBrowse: function(){
  82. var txtFileName = document.getElementById("txtFileName");
  83. txtFileName.value = "";
  84.  
  85. cancelUpload();
  86. selectFile();
  87. },
  88.  
  89. // Called by the submit button to start the upload
  90. doSubmit: function(e) {
  91. e = e || window.event;
  92. if (e.stopPropagation) {
  93. e.stopPropagation();
  94. }
  95.  
  96. e.cancelBubble = true;
  97.  
  98. try {
  99. swfy.startUpload();
  100. }
  101. catch (ex) {
  102.  
  103. }
  104.  
  105. return false;
  106. },
  107.  
  108. // Called by the queue complete handler to submit the form
  109. uploadDone: function() {
  110. try {
  111. document.forms[0].submit();
  112. } catch (ex) {
  113. alert("Error submitting the form");
  114. }
  115. },
  116.  
  117. fileQueueError: function(file, errorCode, message) {
  118. try {
  119. // Handle this error separately because we don't want to create a FileProgress element for it.
  120. switch (errorCode) {
  121. case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
  122. alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
  123. return;
  124. case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
  125. alert("The file you selected is too big.");
  126. this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  127. return;
  128. case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
  129. alert("The file you selected is empty. Please select another file.");
  130. this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  131. return;
  132. case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
  133. alert("The file you choose is not an allowed file type.");
  134. this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  135. return;
  136. default:
  137. alert("An error occurred in the upload. Try again later.");
  138. this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  139. return;
  140. }
  141. } catch (e) {}
  142. },
  143.  
  144. fileQueued: function(file) {
  145. try {
  146. var txtFileName = document.getElementById("txtFileName");
  147. txtFileName.value = file.name;
  148. } catch (e) {}
  149. },
  150.  
  151. uploadProgress: function(file, bytesLoaded, bytesTotal) {
  152. try {
  153. var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
  154.  
  155. file.id = "singlefile";
  156. var progress = new FileProgress(file, this.customSettings.progress_target);
  157. progress.setProgress(percent);
  158. progress.setStatus("Uploading...");
  159. }
  160. catch(e){}
  161. },
  162.  
  163. uploadSuccess: function(file, serverData) {
  164. try {
  165. file.id = "singlefile";
  166. var progress = new FileProgress(file, this.customSettings.progress_target);
  167. progress.setComplete();
  168. progress.setStatus("Complete.");
  169. progress.toggleCancel(false);
  170.  
  171. if (serverData === " ") {
  172. this.customSettings.upload_successful = false;
  173. }
  174. else {
  175. this.customSettings.upload_successful = true;
  176. document.getElementById("hidFileID").value = serverData;
  177. }
  178. }
  179. catch (e) {}
  180. },
  181.  
  182. uploadComplete: function(file) {
  183. try {
  184. if (this.customSettings.upload_successful) {
  185. document.getElementById("btnBrowse").disabled = "true";
  186. uploadDone();
  187. }
  188. else {
  189. file.id = "singlefile";
  190. var progress = new FileProgress(file, this.customSettings.progress_target);
  191. progress.setError();
  192. progress.setStatus("File rejected");
  193. progess.toggleCancel(false);
  194.  
  195. var txtFileName = document.getElementById("txtFileName");
  196. txtFileName.value = "";
  197.  
  198. alert("There was a problem with the upload.\nThe server did not accept it.");
  199. }
  200. }
  201. catch (e){}
  202. },
  203.  
  204. uploadError: function(file, errorCode, message) {
  205. try {
  206. var txtFileName = document.getElementById("txtFileName");
  207. txtFileName.value = "";
  208. validateForm();
  209.  
  210. // Handle this error separately because we don't want to create a FileProgress element for it.
  211. switch (errorCode) {
  212. case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
  213. alert("There was a configuration error. You will not be able to upload a resume at this time.");
  214. this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
  215. return;
  216. case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
  217. alert("You may only upload 1 file.");
  218. this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  219. return;
  220. case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
  221. case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
  222. break;
  223. default:
  224. alert("An error occurred in the upload. Try again later.");
  225. this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  226. return;
  227. }
  228.  
  229. file.id = "singlefile"; // This makes it so FileProgress only makes a single UI element, instead of one for each file
  230. var progress = new FileProgress(file, this.customSettings.progress_target);
  231. progress.setError();
  232. progress.toggleCancel(false);
  233.  
  234. switch (errorCode) {
  235. case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
  236. progress.setStatus("Upload Error");
  237. this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
  238. break;
  239. case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
  240. progress.setStatus("Upload Failed.");
  241. this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  242. break;
  243. case SWFUpload.UPLOAD_ERROR.IO_ERROR:
  244. progress.setStatus("Server (IO) Error");
  245. this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
  246. break;
  247. case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
  248. progress.setStatus("Security Error");
  249. this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
  250. break;
  251. case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
  252. progress.setStatus("Upload Cancelled");
  253. this.debug("Error Code: Upload Cancelled, File name: " + file.name + ", Message: " + message);
  254. break;
  255. case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
  256. progress.setStatus("Upload Stopped");
  257. this.debug("Error Code: Upload Stopped, File name: " + file.name + ", Message: " + message);
  258. break;
  259. }
  260. }
  261. catch (e) {}
  262. }
  263.  
  264. })
Add Comment
Please, Sign In to add comment