read - subir archivos ftp c#
Conservar la fecha de creación de imagen al cargar a FTP (1)
Así que estoy creando un sitio web para mi familia, donde podemos subir nuestras imágenes y verlas, pero una característica importante del sitio web es ordenar por fecha para que, por ejemplo, cuando mi tía haya tomado fotos en el cumpleaños de mi madre y yo también tenga fotos tomadas y cargamos las imágenes que se agregarán al mismo álbum, etc.
Me di cuenta de que no es posible conservar la fecha cuando se carga a través de un navegador. Así que haré un pequeño programa que solo se usa para subir imágenes. Tengo un servidor FTP ejecutándose pero cada vez que subo imágenes la fecha cambiará a la fecha actual. He encontrado la respuesta de por qué lo hace, así que ahora estoy buscando una manera de preservar la fecha al cargar en FTP.
Aquí hay algunas ideas que he tenido:
- Si el programa agrega los archivos a un archivo zip y carga ese archivo zip, conservarán la fecha, pero eso significa que tendré que tener algo en el servidor que desempaquete las cremalleras.
- Cuando se cargan las imágenes, el programa extrae la fecha de creación de la imagen original y la agrega a un archivo de texto que también carga, pero que nuevamente requerirá un programa en el servidor que cambie la fecha de creación de las imágenes cargadas.
- ¿Tal vez cargue las imágenes y luego cambie las imágenes cargadas creadas desde el cliente?
- ¿Tal vez cargue las imágenes y luego cambie las imágenes cargadas creadas desde el cliente?
En el protocolo FTP, use el MFMT
o MDTM
para actualizar la marca de tiempo de modificación del archivo o MFCT
para actualizar la marca de tiempo de creación del archivo, dependiendo de cuál de estos sea compatible con su servidor FTP.
En realidad ninguno de ellos está estandarizado.
- El
MFMT
y elMFCT
están redactados aquí: https://tools.ietf.org/html/draft-somers-ftp-mfxx-04 - El
MDTM
se define en RFC 3659 para recuperar la marca de tiempo de modificación de archivo, utilizando la sintaxis delMDTM filename
. Pero muchos servidores FTP admiten unaMDTM filename timestamp
sintaxis alternativa (no estándar) (es decir, la misma que laMFMT
propuesta) para actualizar también la marca de tiempo de la modificación.
Aunque la implementación nativa de FTP en .NET Framework ( FtpWebRequest
o WebClient
wrapper), no es compatible con ninguno de estos.
Tienes que usar una biblioteca de terceros.
Por ejemplo, el ensamblado WinSCP .NET conserva la marca de tiempo de modificación automáticamente para cualquier carga (o descarga) sin ningún código adicional.
Un código de ejemplo simple para cargar un archivo (preservando implícitamente la marca de tiempo de modificación):
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload
session.PutFiles(@"d:/toupload/image.jpg", "/home/user/").Check();
}
Para más detalles, vea Session.PutFiles
.
La última versión del cliente FTP WinSCP GUI (5.9 y más reciente) incluso puede generar el código C # para usted .
(Soy el autor de WinSCP)