code: def upload_local_file(self, local_file_path, file_obj=None):
          
          if file_obj is None and not os.path.exists(local_file_path):
              return
          storedfile = StoredFile()
          storedfile.mimetype = mimetypes.guess_type(local_file_path)[0]
          storedfile.filename = os.path.basename(local_file_path)
          if file_obj is None:
              storedfile.length = os.stat(local_file_path).st_size
          else:
              file_obj.seek(0,os.SEEK_END)
              storedfile.length = file_obj.tell()
              file_obj.seek(0)
          storedfile = self(storedfile).create()
          md5 = hashlib.md5()
          url = self(storedfile).getUrl() + "/addchunk"
          if file_obj is None:
              with open(local_file_path, 'rb') as filecontents:
                  upload_chunks(url, storedfile, filecontents)
          else:
              upload_chunks(url, storedfile, file_obj)
          return self(storedfile).update()
docs: Create a Stored File and upload it's data.  This is a one part do it all type method.  Here is what
          it does:
              1. "Discover" information about the file (mime-type, size)
              2. Create the stored file object in slick
              3. Upload (chunked) all the data in the local file
              4. re-fetch the stored file object from slick, and return it