Nous avons mis en place un processus qui télécharge les fichiers sur notre site Web. Il est devenu important pour les utilisateurs de voir quand ces fichiers ont été créés. Je suis à la recherche d'un moyen d'extraire la date de création d'origine à partir de HttpPostedFile. Si quelqu'un a une idée pour moi, je l'apprécierais vraiment (je suis un peu perplexe à ce point).Obtenir les fichiers d'origine créer la date lors du téléchargement
Répondre
Voici la solution que j'ai trouvée. Une fois que vous avez téléchargé le fichier et l'avez enregistré sur le serveur, vous pouvez accéder aux métadonnées du fichier (cette solution ne s'applique toutefois qu'aux fichiers image). Il existe également du code supplémentaire qui peut être utilisé pour afficher les métadonnées entières le fichier si nécessaire, et je l'ai trouvé un peu bizarre formating date dans les métadonnées que je piraté autour qui pourrait probablement être fait plus propre) ...
System.IO.FileInfo fileInfo = new System.IO.FileInfo(UPLOAD_DIRECTORY + file.FileName);
if (!fileInfo.Exists)
{
break;
}
else
{
//Check for metadata original create date
if (_imageFormats.Contains(fileInfo.Extension.ToLower()))
{
Stream fileStream = fileInfo.OpenRead();
System.Drawing.Image image = new System.Drawing.Bitmap(fileStream);
// Get the PropertyItems property from image.
System.Drawing.Imaging.PropertyItem[] propItems = image.PropertyItems;
// For each PropertyItem in the array, display the ID, type, and
// length.
int count = 0;
string s1 = null;
string dateID = null;
foreach (System.Drawing.Imaging.PropertyItem propItem in propItems)
{
s1 += "Property Item " + count.ToString() + "/n/r";
s1 += "iD: 0x" + propItem.Id.ToString("x") + "/n/r";
if (("0x" + propItem.Id.ToString("x")) == PROPERTYTAGEXIFDTORIG)
{
dateID = count.ToString();
}
s1 += "type: " + propItem.Type.ToString() + "/n/r";
s1 += "length: " + propItem.Len.ToString() + " bytes" + "/n/r";
count++;
}
// Convert the value of the second property to a string, and display
// it.
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
if (dateID != null)
{
string date = encoding.GetString(propItems[int.Parse(dateID)].Value);
date = date.Replace("\0", string.Empty);
string[] datesplit = date.Split(' ');
string newDate = datesplit[0].Replace(":", "-") + " " + datesplit[1];
originalCreateDate = DateTime.Parse(newDate);
}
fileStream.Close();
}
Vous venez de saisir la date de création du système de fichiers à partir de HttpPostedFile :: FileName.
Somthing comme ceci:
HttpFileCollection MyFileColl = Request.Files;
HttpPostedFile MyPostedFile = MyFileColl.Get(0);
String filename = MyPostedFile.FileName;
String creationTime;
if (File.Exists(fileName))
{
creationTime = File.GetCreationTime(fileName).ToString();
}
System.writeLine(creationTime);
Cela ne fonctionne que si le fichier Le téléchargement provient du serveur Web lui-même. – David
Je vois, j'ai mal lu comme la date de création du fichier sur le serveur, pas le client. –
Ouais, je m'étais d'abord dirigé sur ce chemin, mais ce que vous finissez avec est le 31/12/1600. –
Vous n'avez pas accès à la date de création du fichier sur le client. Vous pouvez utiliser Fiddler pour le valider. Je crois que les seules données que vous verrez postées sont le nom de fichier et le type mime.
J'ai essayé l'approche mentionnée par Bryon ci-dessus, mais il me donne une date incorrecte . C'est à peu près tout autour de l'année 1600.
Vous pouvez cependant obtenir la date pour chaque fichier (à être) téléchargé depuis la propriété 'lastModifiedDate' via la propriété filesUpload control files.
Voici l'exemple HTML/Javascript pour cela. Je l'ai pris de:
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_fileupload_files et l'a modifié un peu pour notre besoin. Note: Veuillez lire mon commentaire ci-dessous après cet extrait HTML/Javascript.
<!DOCTYPE html>
<html>
<body onload="myFunction()">
<input type="file" id="myFile" multiple size="50" onchange="myFunction()">
<p id="demo"></p>
<script>
function myFunction(){
var x = document.getElementById("myFile");
var txt = "";
if ('files' in myFile) {
if (x.files.length == 0) {
txt = "Select one or more files.";
} else {
for (var i = 0; i < x.files.length; i++) {
txt += "<br><strong>" + (i+1) + ". file</strong><br>";
var file = x.files[i];
if ('name' in file) {
txt += "name: " + file.name + "<br>";
}
if ('size' in file) {
txt += "size: " + file.size + " bytes <br>";
}
if ('lastModifiedDate' in file) {
txt += "lastModifiedDate: " + file.lastModifiedDate.toString();
}
}
}
}
else {
if (x.value == "") {
txt += "Select one or more files.";
} else {
txt += "The files property is not supported by your browser!";
txt += "<br>The path of the selected file: " + x.value; // If the browser does not support the files property, it will return the path of the selected file instead.
}
}
document.getElementById("demo").innerHTML = txt;
}
</script>
<p><strong>Tip:</strong> Use the Control or the Shift key to select multiple files.</p>
</body>
</html>
Vous pouvez transmettre ces informations en tant que paramètre supplémentaire à l'aide du contrôle de téléchargement de fichier jQuery par exemple. Voici le lien démontrant cette:
- 1. DNN 4.9 ... Erreur intermittente lors du téléchargement des fichiers PDF
- 2. ASP.NET: intermittent « Accès refusé » Erreur lors du téléchargement des fichiers
- 3. Créer plusieurs fichiers de téléchargement dynamiquement
- 4. Comment obtenir la date du format datetime
- 5. Lors du téléchargement d'un fichier, toutes les demandes sont bloquées
- 6. Erreurs aléatoires lors du téléchargement de fichiers à partir du point de partage
- 7. Echappement du nom de fichier lors du téléchargement avec Zend_File_Transfer_Adapter_Http
- 8. image DOWNSIZE de l'iPhone lors du téléchargement
- 9. Progression du téléchargement lors du téléchargement de fichier à l'aide de Webclient.Uploadfile
- 10. Téléchargement de fichiers
- 11. Impossible de créer des fichiers temporaires lors de la compilation
- 12. Comment obtenir Content-Type lors du téléchargement de fichier à partir de flash - est-ce possible?
- 13. Ignorer les fichiers lors de la fusion de métadonnées lors du processus de liaison dans VS2005
- 14. Prévention de l'expiration du délai de téléchargement des fichiers volumineux
- 15. Comment ouvrir les fichiers automatiquement lors du démarrage d'emacs?
- 16. GWT pour obtenir la valeur du champ date
- 17. Pourquoi certains fichiers PDF se bloquent lors du téléchargement dans IE lorsqu'ils sont servis par Lighttpd
- 18. Comment limiter la taille du téléchargement?
- 19. Définition de l'état de l'utilisateur lors du téléchargement asynchrone
- 20. téléchargement de fichiers multiples
- 21. Obtenir la date du système dans MSVC 6.0
- 22. Obtenir la date d'installation à partir du code managé
- 23. Événement distribué lorsque le réseau est déconnecté lors du téléchargement de fichiers (URL) pour l'objet URLStream
- 24. Obtention d'une extension de fichier et d'un type de contenu incorrects lors du téléchargement du fichier
- 25. Vérification de la taille du téléchargement avant téléchargement
- 26. Lister les fichiers par la dernière date de modification
- 27. PHP Erreur fatale lors du téléchargement/redimensionnement des images
- 28. Les étiquettes sont-elles pertinentes lors du téléchargement des emails de gmail vers sqlserver?
- 29. Watin test hang application lors du téléchargement de fichier
- 30. Utilisation du téléchargement de fichiers Content-Range avec ASP.Net
Si vous utilisez FTP/SCP pour copier les fichiers sur le site, vous pouvez définir une option pour préserver la création du fichier d'origine date –