2016-08-03 2 views
0

Хорошо, мне нужна помощь на высоком уровне или какая-то опытная помощь.У меня проблема Coldfusion/Sharpoint/Excel (Сохранить)

Это проблема с окружающей средой, а не проблема с кодом. Ошибок нет, и файл сохраняется.

Я использую утилиту Sharepoint 2013 REST api, и я получаю файл Excel и сохраняю из cfile coldfusion, action = 'write'. Полученный файл поврежден двумя способами.

1st, расширение файла .xlsm, измененное на zip, не позволяет работать с новой структурой офиса/файлом. Второй файл Excel не открывается в Excel, и Excel не смог исправить повреждение.

Soooo .. cffile action readBinary существует, а дамп отображает «желтый» поле в дампе и обрезает данные.

cffile действие «записи» существует, «writebinary» не существует ...

Когда я вытягиваю данные от Sharepoint и сбросить его, его стандартная синяя коробка, выглядит как данные, но не усеченный, и не является «желтым», как данные «readBinary».

Документация говорит, что запись не нужна двоичной, она просто распознается в двоичном формате.

// возвращенные необходимости модифицировать данные с этими функциями не помогает toBinary() не toBinary (toBase64()) работает, но поврежден toBase64() работает, но коррумпированный прямые спасти работы, но поврежден ...

получают из SharePoint, как REST с бинарным флагом не меняет поврежденный результат

Я пытался спасти в основной Явы, коррумпированной ...

Открытие поврежденного файла в блокноте ++ выглядит как Файл excel также открывается с помощью блокнота ++ в верхней части файла. (Нет очевидных проблем данных)

Его странно, но в конце файла появляются быть ссылки на файлы на несуществующие файлы, такие как 0000.dat, trash.dat и т.д. и т.п.

As the save, 
and the get (from sharepoint) are all 'working' 
and there would be too much code 
so I am not posting specific code. 

Если у вас есть идеи, которые не были опробованы или решили эту конкретную проблему, я бы хотел услышать вашу экспертную идею.

Благодаря Гэри

+0

Длинные и короткие этого является то, что ColdFusion сохраняет как .xlsm выглядит .xlsm в Notepad ++, но это не правильный zip-файл. Если вы измените расширение на .zip, утилиты zip не смогут его открыть. Он будет работать с не поврежденным файлом .xlsm ..... – user3005033

+0

Сброс Coldfusion: Structure = синий, двоичный = желтый; xml = white ... Я могу добавить, что toBase64 определенно неверен. Он в два раза длиннее исходного файла и обычного сохранения. Я попробовал winrar «исправить поврежденные файлы zip». но безрезультатно. Данные явно не были хорошим файлом excel, и сообщение было досрочным прекращением/досрочным прекращением. – user3005033

+0

@Leigh, я хочу поблагодарить вас за ваши комментарии, но я ищу кого-то очень конкретного, и я подозреваю, что они могут не существовать. Для ответа на этот вопрос может потребоваться тот, у кого есть недавний опыт использования Sharepoint 2013 Rest API и Coldfusion. Я благодарен за ваш ответ, но будут сотни строк кода, которые не будут способствовать пониманию проблемы. На данный момент Guesses превосходны, так как я пишу PowerShell и CSOM. – user3005033

ответ

1

Хорошо, я собираюсь съесть мои слова, размещая код может быть полезным. У меня все еще было 15 версий функции, это действительно было бы странно.

Мой исходный код имеет двоичную часть для Sharepoint, но не часть CFHTTP. Ответ/проблема была там, coldfusion не поддерживал двоичные данные. После добавления параметра «дамп» отразил изменение с «желтым» двоичным цветом.

ex: Для вызова cfhttp!::

getAsBinary="true" // default is NO not AUTO -> should be auto adobe 

До:

rc.spActionURL = "https://{site}.sharepoint.com/sites/#this.sp365.orisApp#/_api/Web/GetFileByServerRelativeUrl('/sites/#this.sp365.orisApp#/#arguments.libraryPath#/#arguments.folderName#/#arguments.fileName#')/$value"; 
//Perform SharePoint ODATA Query as long as access_token was successfully received. 
cfhttp(method="get", charset="utf-8", 
url="#rc.spActionURL#", result="rc.spURLRequestResult",) { 
    cfhttpparam(name="Accept", type="header", value="application/xml"); 
    cfhttpparam(name="Content-Type", type="header", value="application/vnd.ms-excel.sheet.macroEnabled.12"); 
    cfhttpparam(name="Authorization",   type="header", value="#arguments.AccessToken#"); 
    cfhttpparam(name="binaryStringRequestBody", type="header", value="true"); 
} ; 

ПОСЛЕ:

rc.spActionURL = "https://{site}.sharepoint.com/sites/#this.sp365.orisApp#/_api/Web/GetFileByServerRelativeUrl('/sites/#this.sp365.orisApp#/#arguments.libraryPath#/#arguments.folderName#/#arguments.fileName#')/$value"; 
//Perform SharePoint ODATA Query as long as access_token was successfully received. 
cfhttp(method="get", 
    getAsBinary="true" // default is NO not AUTO -> should be auto adobe 
    charset="utf-8", 
    url="#rc.spActionURL#", 
    , result="rc.spURLRequestResult",) { 
    cfhttpparam(name="Accept", type="header", value="application/xml"); 
    cfhttpparam(name="Content-Type", type="header", value="application/vnd.ms-excel.sheet.macroEnabled.12"); 
    cfhttpparam(name="Authorization",   type="header", value="#arguments.AccessToken#"); 
    cfhttpparam(name="binaryStringRequestBody", type="header", value="true"); 
} ; 
+0

А, ты не любишь его, когда что-то такое маленькое наносит такой хаос? Рад, что вы, наконец, поняли это (и слава на ваши самые дипломатические ответы ;-) – Leigh

+1

Спасибо, и я приветствую вход. Похоже, ваши предыдущие комментарии исчезли. Я пытался быть осторожным в своем сообщении, я не был недоволен предложением предоставить код ... Я просто не мог опубликовать все, что я пробовал! Его легко понять неправильно в Интернете .. электронная почта и т. Д. Возможно, это поможет кому-то, поэтому я публикую свою проблему/исправление.! :) – user3005033

+0

* Его легко понять на веб-сайте * Boy howdy, поэтому ответы, подобные вашим, очень освежают :) Хотя создание небольшого примера воспроизведения - это идеальный вариант, когда вы в муках проблемы, иногда бывает сложно получить к этому моменту. Невероятно, насколько легко это * после того, как вы решите проблему ;-) * RE: ваши предыдущие комментарии исчезли * Да, я оставил комментарий, но думаю, что вы его не видели. По сути, в то время как я подозревал, что это может оказаться проблемой CF, если бы это было больше Sharepoint, тогда мои комментарии были просто «шумом», поэтому я удалил их, чтобы не быть отвлекающим ;-) – Leigh

Смежные вопросы