// import { S3Client, PutObjectCommand  } from "@aws-sdk/client-s3";

import { initMinio, putObject } from 'minio-js'
import { v4 as uuidv4 } from 'uuid'

// import Minio from 'minio';
// const Minio = require("minio");
// import * as Minio from 'minio'


/**
 * minio 上传文件
 * @param {*} files 文件
 * @param {*} fileDir 上传后存放的路径
 * @returns 
 */
export const uploadFileMinio = async (files,fileDir,tempFilePaths) => {
    try {

        if (!files.length){
            uni.showToast({ title: '请选择要上传的文件', icon: 'none' })
            return;
        }


        let bucketName="718ys-test";//'你的存储桶名称'
        // 初始化 Minio 客户端
        // initMinio({
        //     endPoint: '192.168.236.196', // 例如 'play.min.io'
        //     port: 9000, // 端口，使用 SSL 通常是 443，非 SSL 是 9000
        //     useSSL: false, // 根据你的 Minio 服务器配置决定 将此值设置为“true”为HTTPS访问，false为普通http访问
        //     accessKey: 'cyLu4uv7mFErTWkx',//'你的AccessKey',
        //     secretKey: 'XE9PYr3wt6MHveHn8kA008rebxtj2c7S' //'你的SecretKey'
        // });

        // const minioClient = new Minio.Client({
        //     endPoint: '192.168.236.196', // 例如 'play.min.io'
        //     port: 9000, // 端口，使用 SSL 通常是 443，非 SSL 是 9000
        //     useSSL: false, // 根据你的 Minio 服务器配置决定 将此值设置为“true”为HTTPS访问，false为普通http访问
        //     accessKey: 'cyLu4uv7mFErTWkx',//'你的AccessKey',
        //     secretKey: 'XE9PYr3wt6MHveHn8kA008rebxtj2c7S' //'你的SecretKey'
        // })

        // const s3Client = new S3Client({
        //     region: "1-1", // 或其他区域，与MinIO配置一致
        //     endpoint: "http://192.168.236.196:9000", // MinIO的端点
        //     credentials: {
        //         accessKeyId: "cyLu4uv7mFErTWkx", // MinIO的Access Key
        //         secretAccessKey: "XE9PYr3wt6MHveHn8kA008rebxtj2c7S", // MinIO的Secret Key
        //     },
        //     s3ForcePathStyle: true, // MinIO需要设置为true
        //     signatureVersion: "v4",
        // });
       

        let retrunFileArr=[];

        // 批量上传
        const uploadPromises = files.map((file,index) => {
            console.log("111uploadPromises=>",file)
            return new Promise(async(resolve, reject) => {
                // 1.图片路径
                let fileName = uuidv4()+ "." + file.name.split(".").pop();
                let imgDir = fileDir?(fileDir+'/'+fileName):'/'+fileName;
                retrunFileArr.push(imgDir);
                console.log(222,"uploadPromises=>",imgDir)
                // minioUpload

                uni.uploadFile({
                    url: `http://192.168.236.196:9000/`+bucketName+"/",
                    filePath: imgDir,
                    name: 'file',
                    formData: {
                        bucketName,
                        accessKey: "XE9PYr3wt6MHveHn8kA008rebxtj2c7S",
                        secretKey: "cyLu4uv7mFErTWkx",
                    },success: (res) => {
                        uni.hideLoading()
                        if (res.statusCode !== 204) {
                            reject()
                        } else {
                            resolve(aliyunKey)
                        }
                    },fail: err => {
                        reject()
                        uni.hideLoading()
                    }
                })

                // const command = new PutObjectCommand({
                //     Bucket: bucketName,
                //     Key: imgDir, // 文件名
                //     // ContentType: "text/plain", // 文件类型
                // });
                // const data = await s3Client.send(command);
                // console.log("S3 Buckets:",data);
                // resolve(data)

                // // 2. 读取文件
                // const arrayBuffer = await readFileAsArrayBuffer(file);
                // console.log("333执行上传=>",arrayBuffer)

                // // 3. 执行上传
                // putObject(bucketName, arrayBuffer, imgDir, function (err, etag) {
                //     console.log("444执行上传=>",err,etag)
                //     if (err) {
                //         console.error('555上传失败:', err);
                //         // 处理错误
                //         reject(err)
                //     } else {
                //         console.log('666上传成功，Etag:', etag);
                //         // 上传成功后的处理
                //         resolve(etag)
                //     }
                // });
                
            })
        })

        await Promise.all(uploadPromises)
        uni.showToast({ title: '所有文件上传成功', icon: 'success' })
        return retrunFileArr;

    } catch (error) {
        console.error('上传过程中出错:', error);
        uni.showToast({ title: '上传失败', icon: 'none' })
        return [];
    }
};

// 将 File 对象读取为 ArrayBuffer 的辅助函数
const readFileAsArrayBuffer = (file) => {
    
    return new Promise((resolve, reject) => {
        const reader = new FileReader();
        reader.onload = () => resolve(reader.result);
        reader.onerror = reject;
        reader.readAsArrayBuffer(file);
    });
};