@ -5,6 +5,7 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					package  upload  
					 
					 
					 
					package  upload  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					import  (  
					 
					 
					 
					import  (  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						"mime"   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"net/http"   
					 
					 
					 
						"net/http"   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"net/url"   
					 
					 
					 
						"net/url"   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"path"   
					 
					 
					 
						"path"   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -31,7 +32,6 @@ func (err ErrFileTypeForbidden) Error() string { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						return  "This file extension or type is not allowed to be uploaded."   
					 
					 
					 
						return  "This file extension or type is not allowed to be uploaded."   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					var  mimeTypeSuffixRe  =  regexp . MustCompile ( ` ;.*$ ` )  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					var  wildcardTypeRe  =  regexp . MustCompile ( ` ^[a-z]+/\*$ ` )  
					 
					 
					 
					var  wildcardTypeRe  =  regexp . MustCompile ( ` ^[a-z]+/\*$ ` )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Verify validates whether a file is allowed to be uploaded.
  
					 
					 
					 
					// Verify validates whether a file is allowed to be uploaded.
  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -51,7 +51,11 @@ func Verify(buf []byte, fileName string, allowedTypesStr string) error { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						fullMimeType  :=  http . DetectContentType ( buf )   
					 
					 
					 
						fullMimeType  :=  http . DetectContentType ( buf )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						mimeType  :=  strings . TrimSpace ( mimeTypeSuffixRe . ReplaceAllString ( fullMimeType ,  "" ) )   
					 
					 
					 
						mimeType ,  _ ,  err  :=  mime . ParseMediaType ( fullMimeType )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  err  !=  nil  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							log . Warn ( "Detected attachment type could not be parsed %s" ,  fullMimeType )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							return  ErrFileTypeForbidden { Type :  fullMimeType }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						extension  :=  strings . ToLower ( path . Ext ( fileName ) )   
					 
					 
					 
						extension  :=  strings . ToLower ( path . Ext ( fileName ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers
   
					 
					 
					 
						// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers