gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

api-put-object-file-context.go (1992B)


      1 /*
      2  * MinIO Go Library for Amazon S3 Compatible Cloud Storage
      3  * Copyright 2017 MinIO, Inc.
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 package minio
     19 
     20 import (
     21 	"context"
     22 	"mime"
     23 	"os"
     24 	"path/filepath"
     25 
     26 	"github.com/minio/minio-go/v7/pkg/s3utils"
     27 )
     28 
     29 // FPutObject - Create an object in a bucket, with contents from file at filePath. Allows request cancellation.
     30 func (c *Client) FPutObject(ctx context.Context, bucketName, objectName, filePath string, opts PutObjectOptions) (info UploadInfo, err error) {
     31 	// Input validation.
     32 	if err := s3utils.CheckValidBucketName(bucketName); err != nil {
     33 		return UploadInfo{}, err
     34 	}
     35 	if err := s3utils.CheckValidObjectName(objectName); err != nil {
     36 		return UploadInfo{}, err
     37 	}
     38 
     39 	// Open the referenced file.
     40 	fileReader, err := os.Open(filePath)
     41 	// If any error fail quickly here.
     42 	if err != nil {
     43 		return UploadInfo{}, err
     44 	}
     45 	defer fileReader.Close()
     46 
     47 	// Save the file stat.
     48 	fileStat, err := fileReader.Stat()
     49 	if err != nil {
     50 		return UploadInfo{}, err
     51 	}
     52 
     53 	// Save the file size.
     54 	fileSize := fileStat.Size()
     55 
     56 	// Set contentType based on filepath extension if not given or default
     57 	// value of "application/octet-stream" if the extension has no associated type.
     58 	if opts.ContentType == "" {
     59 		if opts.ContentType = mime.TypeByExtension(filepath.Ext(filePath)); opts.ContentType == "" {
     60 			opts.ContentType = "application/octet-stream"
     61 		}
     62 	}
     63 	return c.PutObject(ctx, bucketName, objectName, fileReader, fileSize, opts)
     64 }