Αποστολέας Θέμα: Ηλεκτρονικό Πρωτόκολλο Σχολείου  (Αναγνώστηκε 18039 φορές)

Δημήτρης Κανάς

  • Εκπαιδευτικός
  • Δεινόσαυρος
  • *****
  • Μηνύματα: 203
    • Εργαστήρι Δημοτικού Σχολείου
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #120 στις: 20 Νοέ 2019, 06:49:20 μμ »
Γιώργο και πάλι έδωσες και γρήγορα μάλιστα τα φώτα σου... και οι δύο τρόποι δουλεύουν.

igaid

  • ΠΛΗΝΕΤ
  • *
  • Μηνύματα: 108
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #121 στις: 19 Μάι 2020, 11:08:55 πμ »
Καλημέρα!
Σήμερα πήγα να επισυνάψω ένα αρχείο και έλαβα την απάντηση "Λάθος!!! ...... βλέπε συνημμένο.
Τι να ελέγξω;
Πρώην ΚΕΠΛΗΝΕΤ

Γεώργιος Θεοδώρου

  • Βετεράνος
  • ****
  • Μηνύματα: 90
    • Διαχείριση απουσιών
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #122 στις: 19 Μάι 2020, 12:00:48 μμ »
Αυτό το κάνει μόνο με ένα συγκεκριμένο αρχείο;

σκέψη 1η

Ρίξε μια ματιά μήπως το όνομα αρχείου περιέχει απαγορευμένους χαρακτήρες
όπως περιγράφεται στο παρακάτω απόσπασμα από την ιστοσελίδα:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file



Use any character in the current code page for a name, including Unicode characters and characters in the extended character set (128–255), except for the following:

    The following reserved characters:
        < (less than)
        > (greater than)
        : (colon)
        " (double quote)
        / (forward slash)
        \ (backslash)
        | (vertical bar or pipe)
        ? (question mark)
        * (asterisk)


σκέψη 2η

Μήπως υπερβαίνει το μέγεθος που έχει οριστεί στην php;
« Τελευταία τροποποίηση: 19 Μάι 2020, 12:16:14 μμ από Γεώργιος Θεοδώρου »

igaid

  • ΠΛΗΝΕΤ
  • *
  • Μηνύματα: 108
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #123 στις: 19 Μάι 2020, 01:23:01 μμ »
Κάτι με το μήκος του ονόματος παίζει. Υπάρχει όριο;
Πρώην ΚΕΠΛΗΝΕΤ

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 480
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #124 στις: 19 Μάι 2020, 01:46:20 μμ »
Μια ιδέα θα ρίξω εδώ:

Αν υπάρχει ς στο όνομα τότε δεν γυρίζει σε κεφαλαίο Σ, παραμένει ς από Windows 7 και πάνω. Αν γυρίσει το ς σε σ τότε διορθώνει το πρόβλημα!

Γεώργιος Θεοδώρου

  • Βετεράνος
  • ****
  • Μηνύματα: 90
    • Διαχείριση απουσιών
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #125 στις: 19 Μάι 2020, 03:19:17 μμ »
Στείλε μου το αρχείο

Αν έχει απόρρητο περιεχόμενο σβήσε ότι μη επιτρεπτό


να του ρίξω μια ματιά

Γεώργιος Θεοδώρου

  • Βετεράνος
  • ****
  • Μηνύματα: 90
    • Διαχείριση απουσιών
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #126 στις: 19 Μάι 2020, 05:32:08 μμ »
Κάτι με το μήκος του ονόματος παίζει. Υπάρχει όριο;

Διαβάζοντας εδώ βλέπουμε το όριο

windows

Maximum file name length    255 Unicode characters

https://docs.microsoft.com/de-de/windows/win32/fileio/filesystem-functionality-comparison#limits


τα ίδια και στο linux 255 chars (bytes)


https://stackoverflow.com/questions/34980895/extending-ext4-file-systems-filename-size-limit-to-1012-characters


Μένει να επιβεβαιωθεί ότι το συγκεκριμμένο όνομα είναι πάνω από το όριο.




Σημείωση: Το όνομα συντίθεται από ΑΠ-εεεεμμηη_filename
Η σκέψη πίσω από αυτό είναι να μπορείς εύκολα να ξέρεις ένα αρχείο σε ποιο πρωτόκολλο και ημερομηνία αντιστοιχεί

ΑΠ = Αρ. Πρωτοκόλλου
εεεεμμηη = Ημερομηνία: 4ψήφιο έτος 2ψήφιος μήνας 2ψήφια ημέρα

πχ:
38-20191227_ΕΝΗΜΕΡΩΤΙΚΟ  ΚΟΡΔΗ ΝΕΚΤΑΡΙΟΥ  ΓΙΑ ΤΙΣ ΤΕΛΕΥΤΑΙΕΣ ΕΚΠΑΙΔΕΥΤΙΚΕΣ ΕΞΕΛΙΞΕΙΣ.doc

'Αρα με  5ψήφιο  Αρ.Πρωτ. δεσμεύονται 15 χαρακτήρες για τα πρώτα ...
« Τελευταία τροποποίηση: 19 Μάι 2020, 06:00:28 μμ από Γεώργιος Θεοδώρου »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 480
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #127 στις: 19 Μάι 2020, 07:38:36 μμ »
Ισχύει το 260 maxpath, αλλά όχι στη unicode έκδοση.
To 260 αναφέρεται σε χαρακτήρες όχι σε bytes. Έτσι για κλήσεις unicode (2bytes κάθε χαρακτήρας) σε bytes είναι διπλάσιο!

 Υπάρχει και το όριο στους 32767 χαρακτήρες (συνολικά μαζί με το όνομα αρχείου), αλλά πρέπει να υπάρχει στην αρχή το \\?\
Αυτό γίνεται σε VB6, αν χρησιμοποιήσουμε απευθείας το KERNEL32:
Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileW" (ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Επίσης στη VB6 αν θέλω να ανοίξω το F$ το οποίο είναι σε UNICODE, με την Open, την δική της εντολή το μετατρέπω σε DosPath
Open GetDosPath(F$) For Binary Access Read As i

Private Declare Function GetShortPathName Lib "KERNEL32" Alias _
"GetShortPathNameW" (ByVal lpszLongPath As Long, _
ByVal lpszShortPath As Long, ByVal cchBuffer As Long) As Long

Public Function GetDosPath(LongPath As String) As String
Dim s As String
Dim i As Long
Dim PathLength As Long
        i = Len(LongPath) * 2 + 2
        s = String(1024, 0)
        PathLength = GetShortPathName(StrPtr(LongPath), StrPtr(s), i)
        GetDosPath = Left$(s, PathLength)
End Function


Η GetDosPath αν δεν υπάρχει το αρχείο γυρνάει κενό. Έτσι αν θέλω να φτιάξω ένα νέο αρχείο χρησιμοποιώ την  createfile του Kernel32.
Παίζει και σε Windows 64.

Με τον παραπάνω τρόπο μπορώ να έχω ότι χαρακτήρες θέλω, ακόμα και αραβικά.
Αυτό είναι το κανονικό path
c:\users\person\appdata\roaming\microsoft\windows\printer shortcuts\
Και αυτό το shortpath, δείτε ότι βάζει ~1 με αυτό το τρόπο κόβει το όνομα.
c:\users\person\appdata\roaming\MICROS~1\windows\PRINTE~1\

« Τελευταία τροποποίηση: 19 Μάι 2020, 09:10:39 μμ από bugman »

igaid

  • ΠΛΗΝΕΤ
  • *
  • Μηνύματα: 108
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #128 στις: 20 Μάι 2020, 08:21:44 πμ »
Το παρακάτω αρχείο δεν το δέχεται. Όταν το μετονομάζω σε σκέτο Δελτίο.pdf  το αποθηκεύει. Δοκίμασα να αφαιρέσω τα κενά και δεν άλλαξε τίποτα. Καμιά ιδέα;
Τώρα παρατήρησα ότι το αρχείο το αποθηκεύει στο  C:\protocol\storage\app\arxeio\Φ.1 αλλά το μήνυμα του λάθος το εμφανίζει και δεν φαίνεται το αρχείο στο πρωτόκολλο.
 
« Τελευταία τροποποίηση: 20 Μάι 2020, 08:45:55 πμ από igaid »
Πρώην ΚΕΠΛΗΝΕΤ

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5430
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #129 στις: 20 Μάι 2020, 08:41:47 πμ »
Δεν ξέρω αν μπορεί να χρησιμεύσει κάπου, αλλά ας το πετάξω σαν ιδέα... το SMF forum εσωτερικά περνάει τα ονόματα των αρχείων από συνάρτηση md5sum, π.χ. το 'ΔΕΛΤΙΟ ΤΥΠΟΥ ΟΡΓΑΝΙΚΩΝ ΚΕΝΩΝ 2019.2020_signed.pdf' γίνεται 27369b5b702bbae4bea3d1ced4a1f6e3, και στη συνέχεια αποθηκεύει στη βάση το όνομα αρχείου, ενώ στο δίσκο κάτι σαν $database_id-$md5sum (ή θα μπορούσε να γίνει ΑΠ-εεεεμμηη_$md5sum). Ένα πλεονέκτημα είναι ότι δεν υπάρχουν πια περιορισμοί στα ονόματα των αρχείων, ενώ ένα μειονέκτημα το ότι πλέον δεν θα φαίνονται τα ονόματά τους μέσα από απλό file manager.

Γεώργιος Θεοδώρου

  • Βετεράνος
  • ****
  • Μηνύματα: 90
    • Διαχείριση απουσιών
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #130 στις: 20 Μάι 2020, 10:17:35 πμ »
Πρόχειρη απάντηση γιατί το ψάχνω:

Χτυπάει το γράμμα Π γιατί το λογίζει σαν τη σταθερά (pi) π !!!!!!!!!

Αν κάνουμε το όνομα "ΔΕΛΤΙΟ ΤΥ-ΟΥ ΟΡΓΑΝΙΚΩΝ ΚΕΝΩΝ 2019.2020_signed.pdf"  το περνάει !!!

Θα μελετήσω πως πρεπει να γίνει escape στην php

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 480
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #131 στις: 20 Μάι 2020, 10:25:41 πμ »
Παρατήρησα ότι έχει δύο τέλειες το όνομα.
 Παλαιότερα για να ξεμπερδεύω με κάτι τέτοια έβαζα μια συνάρτηση που έπαιρνε το όνομα και άλλαζε επιλεγμένους χαρακτήρες με παύλες. Έτσι το όνομα αφενός δεν θα έχει πρόβλημα και αφετέρου θα διαβάζεται.
Η χρήση κωδικοποίησης MD5 δεν βολεύει.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 480
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #132 στις: 20 Μάι 2020, 10:34:15 πμ »
Συγνώμη αυτό με το Π που γυρίζει σε αριθμό, στα καλά καθούμενα, δεν έχει παίξει σε άλλα ονόματα που έχουν το Π;
Δες εδώ σχετικά με το string interpolation.
https://phppot.com/php/variable-interpolation-in-php/

Εδώ οι μεταβλητές έχουν το $ σαν πρώτο γράμμα. Δεν εξηγείται πώς το Π γίνεται αριθμός.
« Τελευταία τροποποίηση: 20 Μάι 2020, 11:16:49 πμ από bugman »

Γεώργιος Θεοδώρου

  • Βετεράνος
  • ****
  • Μηνύματα: 90
    • Διαχείριση απουσιών
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #133 στις: 20 Μάι 2020, 11:34:04 πμ »
Το παρακάτω αρχείο δεν το δέχεται. Όταν το μετονομάζω σε σκέτο Δελτίο.pdf  το αποθηκεύει. Δοκίμασα να αφαιρέσω τα κενά και δεν άλλαξε τίποτα. Καμιά ιδέα;
Τώρα παρατήρησα ότι το αρχείο το αποθηκεύει στο  C:\protocol\storage\app\arxeio\Φ.1 αλλά το μήνυμα του λάθος το εμφανίζει και δεν φαίνεται το αρχείο στο πρωτόκολλο.

Επιβεβαιώνω ότι το πρόβλημα είναι στην καταχώριση του ονόματος στη ΒΔ και
όχι στο σύστημα αρχείων. Το αρχείο αποθηκεύεται κανονικά

Θα το δω ...

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 480
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Ηλεκτρονικό Πρωτόκολλο Σχολείου
« Απάντηση #134 στις: 20 Μάι 2020, 12:24:39 μμ »
Δες μήπως αφαιρείται η επέκταση αρχείου (τα τρια γράμματα) και μετά καταχωρεί στη βάση. Ενδέχεται λόγω της δεύτερης τελείας να αποκόπτει μεγαλύτερο κομμάτι. Αυτό συνήθως γίνεται όταν υπάρχει λάθος αναζήτηση, από αριστερά ενώ πρέπει να γίνει από δεξιά στο όνομα αρχείου.