লিডম্যাগিক / ফাইল সনাক্ত করা .ডোক্স ফাইলগুলি সনাক্ত করা


17

অন্য কোথাও দেখা গেছে , ডকএক্স, এক্সএলএসএক্স এবং পিটিএক্সএক্স হ'ল জিপ। এগুলি আমার ওয়েব অ্যাপ্লিকেশনটিতে আপলোড করার সময়, file(মাধ্যমে libmagicএবং python-magic) এগুলি জিপ হিসাবে সনাক্ত করে।

আমি ফাইলের বিষয়বস্তুগুলিকে ডাটাবেসে একটি ব্লব হিসাবে সংরক্ষণ করি তবে স্বাভাবিকভাবেই আমি এটি কোন ধরণের ফাইল টাইপের সাথে ব্যবহারকারীর উপর বিশ্বাস রাখতে চাই না। তাই আমি fileডাউনলোডের সময় একটি ফাইলের নাম বিশ্বাস করতে এবং স্বয়ংক্রিয়ভাবে উত্সাহ দিতে চাই ।

আমি জানি যে একটি পরিবর্তন করতে পারে /etc/magicতবে ফর্ম্যাটটি ( magic(5)) আমার পক্ষে উপায় খুব জটিল। আমি ডাবিয়ান বাগগুলিতে ইস্যুটির উপর একটি বাগ রিপোর্ট পেয়েছি তবে এটি ২০০৮ সাল থেকে এটি খুব শীঘ্রই কোনও স্থির হয়ে গেছে বলে মনে হচ্ছে না।

আমি অনুমান করি যে আমার একমাত্র অন্য বিকল্পটি হ'ল প্রকৃতপক্ষে ব্যবহারকারীকে বিশ্বাস করা (তবে এখনও বিষয়বস্তুগুলি একটি ব্লব হিসাবে সংরক্ষণ করুন) এবং কেবলমাত্র ফাইলের নামের উপর ভিত্তি করে ফাইল এক্সটেনশন পরীক্ষা করা। এইভাবে আমি কিছু এক্সটেনশানটিকে অস্বীকার করতে এবং অন্যকে অনুমতি দিতে পারি। এবং যখন ব্যবহারকারী তার ফাইলটি পুনরায় ডাউনলোড করেন, তিনি যেভাবেই আপলোড করেছেন তা এটি থাকতে পারে। তবে ফাইলটি অন্যদের সাথে ভাগ করা থাকলে এই সমাধানটি অনিরাপদ, যেহেতু আপনি আপলোডের অনুমতি দেওয়ার জন্য কেবল ফাইলটির নাম পরিবর্তন করতে পারেন।

কোন ধারনা?

শেষ অবধি, আমি ডকএক্স ইত্যাদির জন্য যাদু সংখ্যার একটি তালিকা পেয়েছি , তবে আমি এগুলি magic(5)বিন্যাসে রূপান্তর করতে পারিনি ।

উত্তর:


17

তুমি ব্যবহার করতে পার

0       string  PK\x03\x04\x14\x00\x06\x00      Microsoft Office Open XML Format

/ ইত্যাদি / যাদুতে আপনার সরবরাহিত তথ্যের উপর ভিত্তি করে সাধারণ ফাইল প্রকার শনাক্ত করতে।

(তবে এটি সর্বজনীন নাও হতে পারে: PK\x03\x04\x00\x14\x08\x08লিবারঅফিস-উত্পাদিত এক্সএলএসএক্স ফাইলগুলির শুরুতে এটি পর্যবেক্ষণ করা হয়েছে।)

উবুন্টুর পরবর্তী সংস্করণগুলিতে .docx, .pptx, এবং .xlsx ফাইলগুলি সঠিকভাবে চিহ্নিত করার চেষ্টা করা হয়েছে। ফাইল ইউটিলিটির জন্য চক্র কোডের চারপাশে খনন করে আমি ~/file-5.09/magic/Magdir/msooxmlফাইলটি খুঁজে পেয়েছি যা সনাক্তকরণ করে does আপনি ফাইলটির একটি অনুলিপি পেতে এবং এটি আপনার /etc/magicফাইলে যুক্ত করতে পারেন ।


ফাইলের অনুলিপি সহ যা 1.5 v.২ আপডেট করা হয়েছে


# $File: msooxml,v 1.5 2014/08/05 07:38:45 christos Exp $
# msooxml:  file(1) magic for Microsoft Office XML
# From: Ralf Brown <ralf.brown@gmail.com>

# .docx, .pptx, and .xlsx are XML plus other files inside a ZIP
#   archive.  The first member file is normally "[Content_Types].xml".
#   but some libreoffice generated files put this later. Perhaps skip
#   the "[Content_Types].xml" test?
# Since MSOOXML doesn't have anything like the uncompressed "mimetype"
#   file of ePub or OpenDocument, we'll have to scan for a filename
#   which can distinguish between the three types

# start by checking for ZIP local file header signature
0       string      PK\003\004
!:strength +10
# make sure the first file is correct
>0x1E       regex       \\[Content_Types\\]\\.xml|_rels/\\.rels
# skip to the second local file header
# since some documents include a 520-byte extra field following the file
# header, we need to scan for the next header
>>(18.l+49) search/2000 PK\003\004
# now skip to the *third* local file header; again, we need to scan due to a
# 520-byte extra field following the file header
>>>&26      search/1000 PK\003\004
# and check the subdirectory name to determine which type of OOXML
# file we have.  Correct the mimetype with the registered ones:
# http://technet.microsoft.com/en-us/library/cc179224.aspx
>>>>&26     string      word/       Microsoft Word 2007+
!:mime application/vnd.openxmlformats-officedocument.wordprocessingml.document
>>>>&26     string      ppt/        Microsoft PowerPoint 2007+
!:mime application/vnd.openxmlformats-officedocument.presentationml.presentation
>>>>&26     string      xl/     Microsoft Excel 2007+
!:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
>>>>&26     default     x       Microsoft OOXML
---

তবে উত্তরসূরীদের জন্য এখানে ভি 1.2 রেখে যাচ্ছেন।

ফাইলের প্যাকেজ আপডেট হওয়ার সাথে সাথে উপরের লিঙ্কটি এখানে একটি অনুলিপি সহ পুরানো যেতে পারে।

#------------------------------------------------------------------------------
# $File: msooxml,v 1.2 2013/01/25 23:04:37 christos Exp $
# msooxml:  file(1) magic for Microsoft Office XML
# From: Ralf Brown <ralf.brown@gmail.com>

# .docx, .pptx, and .xlsx are XML plus other files inside a ZIP
#   archive.  The first member file is normally "[Content_Types].xml".
# Since MSOOXML doesn't have anything like the uncompressed "mimetype"
#   file of ePub or OpenDocument, we'll have to scan for a filename
#   which can distinguish between the three types

# start by checking for ZIP local file header signature
0               string          PK\003\004
# make sure the first file is correct
>0x1E           string          [Content_Types].xml
# skip to the second local file header
#   since some documents include a 520-byte extra field following the file
#   header,  we need to scan for the next header
>>(18.l+49)     search/2000     PK\003\004
# now skip to the *third* local file header; again, we need to scan due to a
#   520-byte extra field following the file header
>>>&26          search/1000     PK\003\004
# and check the subdirectory name to determine which type of OOXML
#   file we have
#   Correct the mimetype with the registered ones:
#     http://technet.microsoft.com/en-us/library/cc179224.aspx
>>>>&26         string          word/           Microsoft Word 2007+
!:mime application/vnd.openxmlformats-officedocument.wordprocessingml.document
>>>>&26         string          ppt/            Microsoft PowerPoint 2007+
!:mime application/vnd.openxmlformats-officedocument.presentationml.presentation
>>>>&26         string          xl/             Microsoft Excel 2007+
!:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
>>>>&26         default         x               Microsoft OOXML
!:strength +10

1
আমি সেই ফাইলটির (MSooxML) বিষয়বস্তুগুলিকে / ইত্যাদি / যাদুতে (ডেবিয়ানে) যুক্ত করেছি এবং এটি কাজ করে।
জে কে

এটি আমার পক্ষেও কাজ করেছিল - যদিও ~/file-5.11/magic/Magdir/msooxmlউত্সটি ব্যবহার করার ক্ষেত্রে আমি ভুল করেছিলাম , যা আমি ব্যবহার করছি এমন কয়েকটি পাওয়ারপয়েন্ট উদাহরণ ফাইলগুলির জন্য কাজ করে না। file-5.17যদিও সংস্করণটি দুর্দান্ত কাজ করে (সম্ভবত ট্যাবগুলির সাথে কিছু করার বা ... ডুনো)।
dsummersl

এফডাব্লুআইডাব্লু, আমি এটি বৈজ্ঞানিক লিনাক্স on এ চেষ্টা করেছি তবে এটি সম্ভবত file5.04-এ রয়েছে, যা মাইম টাইপ ট্যাগকে 64 টি অক্ষরে ছেঁটে ফেলেছে (তবে আপনাকে সতর্ক করে দিয়েছে) @ স্ট্যানলে-সি উল্লিখিত হিসাবে। আমি ম্যাক ওএস এক্স ম্যাভারিকসও চেষ্টা করেছিলাম, তবে নিয়মগুলি প্রয়োগ করতে এটি পাইনি (যদিও এটি আমাকে [এবং। দ্বিতীয় নিয়মে) পালানোর প্রয়োজনের বিষয়ে সতর্ক করেছিল।
জাওয়াদস্যাক 21 ই

নোট করুন যে "মাইক্রোসফ্ট
ওঅক্সএমএমএল

4

ফাইল, 5.13 এর পূর্ববর্তী সংস্করণ, MIME টাইপটিকে 64 টি অক্ষরে ছাঁটাই করবে। সুতরাং, এমসোএক্সএমএল-এর বিষয়বস্তু ব্যবহার করে ফাইল-বি কমান্ড থেকে মাইমে টাইম "মাইম অ্যাপ্লিকেশন / vnd.openxmlformats-officedocament.wordprocessingml.d; চরসেট = বাইনারি" হয়ে যায় "


0

যদি লিব্রোফাইসির ডকএক্স ব্যবহার করে থাকেন - আপনি / ইত্যাদি / যাদুতে সামগ্রী (নীচে) যুক্ত করতে পারেন:

# start by checking for ZIP local file header signature
0               string          PK\003\004
!:strength +10
>1104           search/300      PK\003\004
# and check the subdirectory name to determine which type of OOXML
# file we have.  Correct the mimetype with the registered ones:
# http://technet.microsoft.com/en-us/library/cc179224.aspx
>>&26           string          word/           Microsoft Word 2007+
!:mime application/vnd.openxmlformats-officedocument.wordprocessingml.document
>>&26         string          ppt/            Microsoft PowerPoint 2007+
!:mime application/vnd.openxmlformats-officedocument.presentationml.presentation
>>&26         string          xl/             Microsoft Excel 2007+
!:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
>>&26         default         x               Microsoft OOXML

এটি চেষ্টা করেছিলেন, তবে এটি কিছু আগে ভুলভাবে সনাক্ত হওয়া এক্সএলএসএক্স-ফাইলগুলি সঠিকভাবে সনাক্ত করাতে পরিচালিত করে, তবে কিছু পূর্বে সঠিকভাবে সনাক্ত হওয়া xlsx- ফাইলগুলি আর সনাক্ত করা যায়নি
মতিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.