Эта проблема больше не входит в сферу действия названия. Я пытаюсь найти способ определить, вытаскивается ли PDF из db в виде байтового массива только для чтения, а затем удаляется из набора результатов. Я сбросил getinfo как в режиме «только для чтения», так и в файл чтения/записи и сравнил атрибуты только, чтобы обнаружить, что различимых различий нет. Я искал google для других методов, но сейчас я застрял.ColdFusion query.removeRows игнорирует <cfif> заявления и удаляет все результаты
Я пытаюсь выполнить фильтрацию с помощью набора результатов PDF и удалить все защищенные паролем. Я декрементирую через индексный цикл на основе длины набора результатов до 1 и сравниваю каждый PDF (ряд) с функцией IsPDFFile()
. Если сравнение неверно, строка не должна удаляться. При использовании инструкции removeRows
<cfif>
, по-видимому, игнорируется, и каждая строка удаляется без разбора.
<cfloop index="i" from='#getScans.recordcount#' to='1' step="-1" >
<cfset pdfDoc = getScans.ATTACHED_DOCUMENT_FILE[i]>
<cfif NOT IsPDFFile("#pdfDoc#")> <!--- or <cfif NOT IsPDFObject("#pdfDoc#")> --->
<cfSet getScans.removeRows(i -1, 1)>
</cfif>
<cfoutput> #getScans.recordcount# </cfoutput>
</cfloop>
Я нахожу очень мало онлайн, что имеет отношение к моей проблеме. Если у кого-то есть какой-то вклад, это было бы замечательно!
Update:
Я обнаружил, что IsPDFFile()
всегда возвращается ложь. Он не распознает какой-либо входной файл в формате pdf. Поэтому моя проблема не в том, что я изначально думал. Я продолжаю получать ошибки ByteArray при попытке обработать PDF-файлы, которые возвращаются с SQL-сервера.
Ошибка, возникающая при попытке сравнить BLOB с чем-либо PDF: «Объекты ByteArray не могут быть преобразованы в строки. - Исключение произошло при вызове метода обработчика событий из Application.cfc. Имя метода: .. . »
... и когда я пытаюсь использовать getinfo, также возникает ошибка:« Произошла ошибка во время операции GETINFO в теге cfpdf.Error: com.adobe.internal.pdftoolkit.core.cos.CosNull не может быть приведен к com.adobe.internal.pdftoolkit.core.cos.CosDictionary конкретная последовательность файлов, включенных или обрабатываемый: ...»
Я хотел бы сделать следующее:
выполнить код, который удаляет PDF из набора данных и т.д.
Это не работает. Ошибка в строке getinfo. Является ли мой синтаксис, возможно, неправильным, или, может быть, мое использование просто неуместно?
Вы уверены, что хотите отправить предупреждение для каждого не-PDF-файла, которое вы удаляете обратно в браузер? Это было бы очень раздражать очень быстро. Как ... после первого. –
точно! Предупреждение предназначено только для отладки. Я обнаружил, что функция IsPDFFile() здесь не подходит. PDF-файл поступает из db как данные ByteArray, и сравнение всегда возвращает false. Я пытаюсь теперь использовать
James
Удостоверьтесь, что код в вашем вопросе обновлен до того момента, когда вам удалось устранить неполадки, а также объясните свой прогресс. Вероятно, стоит заглядывать за «coldfusion storageing pdf if db» и читать, что нужно делать, чтобы преобразовать данные байтового массива в/из фактического двоичного файла PDF –