سؤال

ولدي بعض C # التعليمات البرمجية التي سيتم تحميل الصور والملفات في ديسيبل. حاليا اعتقدت انها تعمل لكافة المستندات التي تناسب قائمة الأنماط المتعددة. ومع ذلك فإنه يفشل على بعض قوات الدفاع الشعبي.

ولقد ضاقت المشكلة وصولا الى حقيقة أن بعض قوات الدفاع الشعبي هي في شكل 1.3 وبعضها في شكل 1.4. 1.4 يعمل ويتم تحميله بشكل صحيح، ولكن 1.3 لا تحميل وأنها لا تولد أي أخطاء وقت التشغيل أنه فشل لمجرد أن يكون المضافة.

وبعض من القانون الحالي لتحميل قوات الدفاع الشعبي هو

Checks for valid MIME Type
...

byte[] fileData = new byte[uploadFile.ContentLength];
uploadFile.InputStream.Read(fileData, 0, uploadFile.ContentLength);

...
Continues on to Uploads to db.

لقوات الدفاع الشعبي أنها تبحث عن "التطبيق / الشعبي" كنوع التمثيل الصامت. أنا لا أعتقد أن هناك نوع آخر لملفات PDF في شكل 1.3، ولكن ربما كنت مخطئا.

وأي شخص آخر من أي وقت مضى لديهم هذه المشكلة قبل وأي المشورة بشأن كيفية تصحيحها؟

هل كانت مفيدة؟

المحلول 4

ويبدو أن ذلك كان مجرد خطأ غبي. كان الملف ملحق .PDF خلافا لبقية مع قوات الدفاع الشعبي. قبعات غبية حصلت لي. وهناك القليل من البيانات التصحيح إضافية لم خدعة.

نصائح أخرى

المشكلة <م> قد أن تكون الطريقة التي كنت تقرأ من دفق الإدخال.

وكلما كنت تتعامل مع تيارات، يجب قراءة مرارا وتكرارا، مع الأخذ علما قيمة العائد على كل التكرار. لذلك ينبغي أن يكون رمز الأصلي:

byte[] fileData = new byte[uploadFile.ContentLength];
int totalRead = 0;
while (totalRead < fileData.Length)
{
    int read = uploadFile.InputStream.Read(fileData, totalRead,
                                           fileData.Length - totalRead);
    if (read == 0)
    {
        throw new IOException("Input data was truncated");
    }
    totalRead += read;
}

ولكن، قد لا تكون المشكلة. أتوقع أن أن تسفر عن بيانات مجتزأة، وليس الغياب الكامل للبيانات. عندما تقول انها "فشلت تماما لتضاف" هل يمكن أن يكون أكثر تحديدا؟ وكم تسجيل وكنت وضعت في؟ أين رمز الذي إدراج البيانات فعليا في قاعدة البيانات؟ ما نوع التمثيل الصامت لا تظهر السجلات الخاصة بك في الحالات حيث انها فشله؟

ويبدو لي مثل تسجيل إضافية من شأنها أن تجعل ربما <م> ضخمة الفرق هنا ... حاليا إما أنك لا تعرف حيث انها تسير بشكل خاطئ، أو انك لم تكن قد أخبرنا. تسجيل يجب توضيح ذلك تماما.

وأنا أتفق مع الإجابة جون السكيت لهذا السؤال. والفرق هو الأرجح لأن أدوبي أضاف حفنة من تقنيات ضغط جديدة لPDF 1.4، لذلك لديك 1.4 ملفات PDF يمكن أن يكون أصغر بكثير من 1.3 ملفات PDF. لذلك، فإن الحاجة إلى قراءة في حلقة قد تظهر فقط لملفات PDF v1.3 للنتيجة. (ولكن هذا مجرد تخمين)

وربما أنها ليست نسخة من قوات الدفاع الشعبي. لم Adobe عرض ملفات PDF خطي في 1.4؟

هو

والبيانات يتسن على الفور الاتصال مع "الرأي على شبكة الإنترنت السريع" قوات الدفاع الشعبي والبيانات غير متوفرة حتى يتم الانتهاء من تحميل مع قوات الدفاع الشعبي القياسية. إذا حاولت الكتابة إلى ديسيبل قبل الانتهاء من نقل أنه قد عمل مع قوات الدفاع الشعبي خطي وليس مع معيار واحد.

وفي كلتا الحالتين، جون السكيت هو الصحيح. تسجيل أو سوف نقاط وضعها بشكل صحيح اقول لكم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top