Cómo encontrar los archivos con todas las extensiones basándose en una expresión regular de nombre de archivo en GoLang.
El siguiente código puede abrir un archivo con el nombre rx80AWS.png, pero quiero abrir un archivo con rx80AWS* sin importar la extensión, ya que los nombres de archivo serán únicos, pero subiremos archivos .png, .pdf y .jpeg en la carpeta.
func DescargarCertificado(w http.ResponseWriter, r *http.Request) {
ArchivoAbierto, err := os.Open("./certificado/rx80_AWS.png") //Abre el archivo para descargarlo después
defer ArchivoAbierto.Close() //Cerrar después de que la función termine
fmt.Println("Archivo:", files)
if err != nil {
http.Error(w, "Archivo no encontrado.", 404) //Devuelve 404 si no se encuentra el archivo
return
}
tempBuffer := make([]byte, 512) //Crea un arreglo de bytes para leer el archivo después
ArchivoAbierto.Read(tempBuffer) //Lee el archivo en bytes
TipoArchivo := http.DetectContentType(tempBuffer) //Obtiene la cabecera del archivo
InfoArchivo, _ := ArchivoAbierto.Stat() //Obtiene información del archivo
TamañoArchivo := strconv.FormatInt(InfoArchivo.Size(), 10) //Obtiene el tamaño del archivo como un string
NombreArchivo := attuid + "_" + habilidad
//Configurar las cabeceras
w.Header().Set("Content-Type", TipoArchivo+";"+NombreArchivo)
w.Header().Set("Content-Length", TamañoArchivo)
ArchivoAbierto.Seek(0, 0) //Ya hemos leído 512 bytes del archivo, por lo que restablecemos el desplazamiento a 0
io.Copy(w, ArchivoAbierto) //'Copia' el archivo al cliente
}
davy.ai
Para abrir el archivo independientemente de la extensión, puedes usar la función
filepath.Glob
para buscar patrones en el nombre del archivo.El código se puede modificar de la siguiente manera:
Este código buscará todos los archivos en el directorio
./certificate
que comiencen conrx80_AWS
y tengan cualquier extensión, y luego abrirá el primer archivo coincidente para ser descargado.