asciiblaster

- draw irc art in your web browser
git clone git://git.acid.vegas/asciiblaster.git
Log | Files | Refs | Archive | README

upload.js (2010B)

      1 var upload = (function(){
      2   var el = document.getElementById("upload_input")
      3   var button = document.getElementById("upload_button")
      4   var uploading = false
      5   
      6   function upload(blob, filename, tag, ascii){
      7     if (uploading) return
      8     filename = filename || get_filename()
      9     tag = tag || "shader"
     10 
     11     button.innerHTML = "uploading..."
     12     button.className = "uploading"
     13     
     14     uploading = true
     15     
     16     uploadImage({
     17       blob: blob,
     18       ascii: ascii,
     19       filename: filename,
     20       username: user.username,
     21       tag: tag,
     22       success: function(data){
     23 
     24         // data.url
     25         // data.filesize
     26         // data.success
     27 
     28         console.log(data);
     29         el.style.display = "block"
     30         el.value = data.url
     31         el.focus()
     32         setCaretToPos(el, 0)
     33         button.innerHTML = "upload"
     34         button.className = ""
     35         uploading = false
     36       },
     37       error: function(data){
     38         console.log(data)
     39         console.log("error uploading: " + data.error)
     40         button.innerHTML = "upload"
     41         button.className = ""
     42         uploading = false
     43       }
     44     });
     45   }
     46 
     47   function uploadImage(opt){
     48     if (! opt.blob || ! opt.filename) return;
     49   
     50     opt.username = opt.username || "";
     51     opt.success = opt.success || noop;
     52     opt.error = opt.error || noop;
     53 
     54     var form = new FormData();
     55 
     56     form.append("username", opt.username);
     57     form.append("filename", opt.filename);
     58     form.append("qqfile", opt.blob);
     59     form.append("tag", opt.tag);
     60     if (opt.ascii) {
     61       form.append("ascii", opt.ascii);      
     62     }
     63 
     64     var req = new XMLHttpRequest();
     65     req.open("POST", "/cgi-bin/im/shader/upload");
     66     req.onload = function(event) {
     67       if (req.status == 200) {
     68         var res = JSON.parse(req.responseText);
     69         if (res.success) {
     70           opt.success(res);
     71         }
     72         else {
     73           opt.error(res);
     74         }      
     75       } else {
     76         opt.error({ success: false, error: req.status });
     77       }
     78     };
     79     req.send(form);
     80   }
     81   
     82   return upload
     83 })()