Fix common.send_file to use pathclass.
This commit is contained in:
		
							parent
							
								
									0de755f138
								
							
						
					
					
						commit
						ea7401b4f2
					
				
					 1 changed files with 9 additions and 11 deletions
				
			
		|  | @ -95,19 +95,16 @@ def send_file(filepath, override_mimetype=None): | |||
|     ''' | ||||
|     Range-enabled file sending. | ||||
|     ''' | ||||
|     if isinstance(filepath, pathclass.Path): | ||||
|         filepath = filepath.absolute_path | ||||
|     filepath = pathclass.Path(filepath) | ||||
| 
 | ||||
|     try: | ||||
|         file_size = os.path.getsize(filepath) | ||||
|     except FileNotFoundError: | ||||
|     if not filepath.is_file: | ||||
|         flask.abort(404) | ||||
| 
 | ||||
|     outgoing_headers = {} | ||||
|     if override_mimetype is not None: | ||||
|         mimetype = override_mimetype | ||||
|     else: | ||||
|         mimetype = mimetypes.guess_type(filepath)[0] | ||||
|         mimetype = mimetypes.guess_type(filepath.absolute_path)[0] | ||||
| 
 | ||||
|     if mimetype is not None: | ||||
|         if 'text/' in mimetype: | ||||
|  | @ -125,25 +122,26 @@ def send_file(filepath, override_mimetype=None): | |||
|             range_max = int_helper(desired_max) | ||||
|         else: | ||||
|             range_min = int_helper(desired_range) | ||||
|             range_max = None | ||||
| 
 | ||||
|         if range_min is None: | ||||
|             range_min = 0 | ||||
|         if range_max is None: | ||||
|             range_max = file_size | ||||
|             range_max = filepath.size | ||||
| 
 | ||||
|         # because ranges are 0-indexed | ||||
|         range_max = min(range_max, file_size - 1) | ||||
|         range_max = min(range_max, filepath.size - 1) | ||||
|         range_min = max(range_min, 0) | ||||
| 
 | ||||
|         range_header = 'bytes {min}-{max}/{outof}'.format( | ||||
|             min=range_min, | ||||
|             max=range_max, | ||||
|             outof=file_size, | ||||
|             outof=filepath.size, | ||||
|         ) | ||||
|         outgoing_headers['Content-Range'] = range_header | ||||
|         status = 206 | ||||
|     else: | ||||
|         range_max = file_size - 1 | ||||
|         range_max = filepath.size - 1 | ||||
|         range_min = 0 | ||||
|         status = 200 | ||||
| 
 | ||||
|  | @ -154,7 +152,7 @@ def send_file(filepath, override_mimetype=None): | |||
|         outgoing_data = bytes() | ||||
|     else: | ||||
|         outgoing_data = etiquette.helpers.read_filebytes( | ||||
|             filepath, | ||||
|             filepath.absolute_path, | ||||
|             range_min=range_min, | ||||
|             range_max=range_max, | ||||
|             chunk_size=P.config['file_read_chunk'], | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue