|  |  | @ -5,12 +5,13 @@ import ( | 
			
		
	
		
			
				
					|  |  |  | 	"encoding/json" | 
			
		
	
		
			
				
					|  |  |  | 	"encoding/xml" | 
			
		
	
		
			
				
					|  |  |  | 	"fmt" | 
			
		
	
		
			
				
					|  |  |  | 	"github.com/chrislusf/seaweedfs/weed/s3api/s3err" | 
			
		
	
		
			
				
					|  |  |  | 	"io" | 
			
		
	
		
			
				
					|  |  |  | 	"io/ioutil" | 
			
		
	
		
			
				
					|  |  |  | 	"net/http" | 
			
		
	
		
			
				
					|  |  |  | 	"strings" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	"github.com/chrislusf/seaweedfs/weed/s3api/s3err" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	"github.com/gorilla/mux" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	"github.com/chrislusf/seaweedfs/weed/glog" | 
			
		
	
	
		
			
				
					|  |  | @ -333,7 +334,7 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 	if ret.Error != "" { | 
			
		
	
		
			
				
					|  |  |  | 		glog.Errorf("upload to filer error: %v", ret.Error) | 
			
		
	
		
			
				
					|  |  |  | 		return "", s3err.ErrInternalError | 
			
		
	
		
			
				
					|  |  |  | 		return "", filerErrorToS3Error(ret.Error) | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	return etag, s3err.ErrNone | 
			
		
	
	
		
			
				
					|  |  | @ -359,3 +360,10 @@ func getBucketAndObject(r *http.Request) (bucket, object string) { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	return | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | func filerErrorToS3Error(errString string) s3err.ErrorCode { | 
			
		
	
		
			
				
					|  |  |  | 	if strings.HasPrefix(errString, "existing ") && strings.HasSuffix(errString, "is a directory") { | 
			
		
	
		
			
				
					|  |  |  | 		return s3err.ErrExistingObjectIsDirectory | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 	return s3err.ErrInternalError | 
			
		
	
		
			
				
					|  |  |  | } |