예제 #1
0
파일: filenode.py 프로젝트: trmznt/cmsfix
def fileupload(request):

    sesskey = request.matchdict.get('sesskey')
    user_id, node_id = tokenize_sesskey(sesskey)
    if user_id != request.user.id:
        raise RuntimeError('Invalid session key!')

    filestorage = request.POST.get('files[]')
    filename = os.path.basename(filestorage.filename)

    tmp_dir = request.registry.settings['cmsfix.tmpdir']
    dest_path = tmp_dir + '%s.payload' % sesskey

    size, total = save_file(dest_path, filestorage, request)

    if size == total:
        dbh = get_dbhandler()
        file_mimetype = mimetypes.guess_type(filename)
        try:
            if not file_mimetype[0]:
                mimetype_id = dbh.EK._id('application/unknown')
            else:
                mimetype_id = dbh.EK._id( file_mimetype[0])
        except KeyError:
            mimetype_id = dbh.EK._id( 'application/unknown' )

        return { 'basename': filename, 'size': size, 'mimetype_id': mimetype_id }

    return {}