def get_safe_file_obj(uploaded_file): file_name = FileName(uploaded_file.filename) mime_type = normalize_mimetype(uploaded_file.mimetype) if not file_name.has_extension: file_name.extension = extensions.get(mime_type) if not file_name.has_extension: file_name.extension = mimetype_extension(mime_type) fd, upload_file = mkstemp(suffix=file_name.safe()) os.close(fd) log.info('PDF convert: %s [%s]', upload_file, mime_type) uploaded_file.save(upload_file) return {'file_obj': upload_file, 'file_name': file_name.safe()}
def convert(): upload_file = None if not lock.lock(): return ("BUSY", 503) try: converter.prepare() timeout = int(request.args.get("timeout", MAX_TIMEOUT)) upload = request.files.get("file") file_name = FileName(upload.filename) mime_type = normalize_mimetype(upload.mimetype) if not file_name.has_extension: file_name.extension = extensions.get(mime_type) if not file_name.has_extension: file_name.extension = mimetype_extension(mime_type) upload_file = os.path.join(CONVERT_DIR, file_name.safe()) log.info("PDF convert: %s [%s]", upload_file, mime_type) upload.save(upload_file) out_file = converter.convert_file(upload_file, timeout) return send_file(out_file, mimetype=PDF) except ConversionFailure as ex: converter.kill() return (str(ex), 400) except Exception as ex: converter.kill() log.warning("Error: %s", ex) return (str(ex), 500) finally: lock.unlock()
def convert(): upload_file = None acquired = lock.acquire(timeout=1) if not acquired: return ('BUSY', 503) try: converter.prepare() timeout = int(request.args.get('timeout', 7200)) for upload in request.files.values(): file_name = FileName(upload.filename) mime_type = normalize_mimetype(upload.mimetype) if not file_name.has_extension: file_name.extension = extensions.get(mime_type) if not file_name.has_extension: file_name.extension = mimetype_extension(mime_type) upload_file = os.path.join(CONVERT_DIR, file_name.safe()) log.info('PDF convert: %s [%s]', upload_file, mime_type) upload.save(upload_file) out_file = converter.convert_file(upload_file, timeout) return send_file(out_file, mimetype=PDF, attachment_filename='output.pdf') return ('No file uploaded', 400) except ConversionFailure as ex: converter.dispose() return (str(ex), 400) except (SystemFailure, Exception) as ex: converter.dispose() log.warn('Error: %s', ex) return ('CRASH', 503) finally: lock.release()
def convert(): acquired = lock.acquire(timeout=1) if app.is_dead or not acquired: return ("BUSY", 503) timeout = int(request.args.get('timeout', 1000)) upload_file = None output_format = request.form.get('format') if not output_format in LIBREOFFICE_EXPORT_TYPES: return ("%s format is not supported" % (output_format), 400) try: for upload in request.files.values(): file_name = FileName(upload.filename) mime_type = normalize_mimetype(upload.mimetype) if not file_name.has_extension: file_name.extension = extensions.get(mime_type) if not file_name.has_extension: file_name.extension = mimetype_extension(mime_type) fd, upload_file = mkstemp(suffix=file_name.safe()) os.close(fd) log.info('Convert to %s: %s [%s]', output_format, upload_file, mime_type) upload.save(upload_file) converter.convert_file(upload_file, output_format, timeout) output_filename = "%s.%s" % (converter.OUT, output_format) log.info("Send file %s [Mime-type: %s]" % (output_filename, OUTPUT_MIME_TYPES[output_format])) return send_file(output_filename, mimetype=OUTPUT_MIME_TYPES[output_format], attachment_filename=output_filename) return ('No file uploaded', 400) except HTTPException: raise except ConversionFailure as ex: app.is_dead = True return (str(ex), 400) except Exception as ex: app.is_dead = True log.error('Error: %s', ex) return ('FAIL', 503) finally: if upload_file is not None and os.path.exists(upload_file): os.unlink(upload_file) if os.path.exists(converter.OUT): os.unlink(converter.OUT) lock.release()
def convert(): if app.is_dead: return ("DEAD", 500) upload_file = None acquired = lock.acquire(timeout=1) if not acquired: return ("BUSY", 503) try: timeout = int(request.args.get('timeout', 100)) for upload in request.files.values(): file_name = FileName(upload.filename) mime_type = normalize_mimetype(upload.mimetype) if not file_name.has_extension: file_name.extension = extensions.get(mime_type) if not file_name.has_extension: file_name.extension = mimetype_extension(mime_type) fd, upload_file = mkstemp(suffix=file_name.safe()) os.close(fd) log.info('PDF convert: %s [%s]', upload_file, mime_type) upload.save(upload_file) log.info('About to begin conversion.') call('libreoffice --headless --convert-to pdf --outdir %s %s ' % ('/tmp/', upload_file), shell=True) return send_file('/tmp/output.pdf', mimetype='application/pdf', attachment_filename='output.pdf') return ('No file uploaded', 400) except HTTPException: raise except ConversionFailure as ex: app.is_dead = True return (str(ex), 400) except Exception as ex: app.is_dead = True log.error('Error: %s', ex) return ('FAIL', 503) finally: if upload_file is not None and os.path.exists(upload_file): os.unlink(upload_file) if os.path.exists('/tmp/output.pdf'): os.unlink('/tmp/output.pdf') lock.release()