Сохранение PDF в OneDrive с помощью jQuery

Моя компания начала использовать Microsoft Office 365. Они используют OneDrive для сохранения и просмотра файлов.

Мне было поручено создать веб-сайт, который позволит клиентам загружать файлы прямо в OneDrive. Моя команда создала нашу собственную фиктивную учетную запись OneDrive для проверки сохранения файлов, которые будут загружены клиентом.

Начиная с простого ввода HTML-формы:

<form id = "uploadfile">
  <input type = "file" id = "pdfFile" name = "pdfFile" class = "form-control" />
  <button type = "button" class = "btn btn-primary" id = "uploadBtn">Upload File</button>
</form>

А теперь jQuery:

$('#uploadBtn').on('click', function(e)
{
  e.preventDefault();
  var formData = new FormData($('#uploadfile')[0]);  // <-- not currently using this variable, but I know I will need it
  var filename = $('#pdfFile').val().replace(/.*(/|\\)/, '');

  var odOptions = 
  {
    clientId: "00000000-xxxxx-0000-xxxx-0000000000",
    action: "upload",  // <-- was originally set to save
    sourceInputElementId: "pdfFile",
    sourceUri: "",
    fileName: filename,
    openInNewWindow: true,
    advanced: {endpointHint: "api.onedrive.com"},
    success: function(files) { /* success handler */ },
    progress: function(p) { /* progress handler */ },
    cancel: function() { /* cancel handler */ },
    error: function(e) { /* error handler */ }
  }
  OneDrive.save(odOptions);
});

Все вышеперечисленное взято по следующей ссылке:

https://docs.microsoft.com/en-us/onedrive/developer/controls/file-pickers/js-v72/save-file

Редактировать

Я добился некоторого прогресса с тех пор, как спросил об этом. Я могу добраться до того места, где открывается окно OneDrive, и вижу различные папки. Но, похоже, мне нет файла для сохранения.

Начиная здесь:

Сохранение PDF в OneDrive с помощью jQuery

Пользователь выбрал изображение. После нажатия кнопки загрузки открывается OneDrive:

Сохранение PDF в OneDrive с помощью jQuery

Но когда я нахожусь в окне OneDrive, после нажатия кнопки «Сохранить» файл не сохраняется.

Что мне не хватает, чтобы сохранить файл в OneDrive?

Вы проверили, работает ли ваше регулярное выражение так, как вы ожидали?

Tiramonium 30.05.2018 19:33

Я могу видеть имя файла, если это то, о чем вы спрашиваете.

John Beasley 30.05.2018 19:35

Вероятно, вы не добавили его в свой код, потому что в руководстве, которое вы сами упомянули, говорится, что это необходимо, поэтому это должно быть очевидно, но, тем не менее, вы спрашиваете, импортируете ли вы сценарий OneDrive так, как он упоминается в руководстве?

Tiramonium 30.05.2018 20:36

Или, может быть, это может быть связано с размером вашего файла. Поскольку вы явно не определяете ограничение размера в своем скрипте, это может быть причиной того, что это не сработает. Или где-то повторяется "#pdfFile".

Tiramonium 30.05.2018 20:39

Я обновил код.

John Beasley 30.05.2018 23:03

(У этого вопроса есть связанный и возможный дубликат вопрос сестры, который читатели могут пожелать прочитать, прежде чем ответить на него).

halfer 01.06.2018 01:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
1 141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец-то мне удалось сохранить в OneDrive. Некоторые изменения были внесены на портал регистрации приложений (где вы получаете свой appID). Я добавил разрешения, чтобы обеспечить возможность чтения и записи в папку в OneDrive.

Я также внес изменения в часть кода odOptions:

$('#uploadBtn').on('click', function(e)
{
  e.preventDefault();
  //var formData = new FormData($('#uploadfile')[0]); 
  //var filename = $('#pdfFile').val().replace(/.*(/|\\)/, '');

  var odOptions = 
  {
    clientId: "00000000-xxxxx-0000-xxxx-0000000000",
    action: "save",  // upload was not valid
    sourceInputElementId: "pdfFile",
    //sourceUri: "", 
    //fileName: filename,
    openInNewWindow: true,
    advanced: {endpointHint: "api.onedrive.com"},
    success: function(files) { /* success handler */ },
    progress: function(p) { /* progress handler */ },
    cancel: function() { /* cancel handler */ },
    error: function(e) { /* error handler */ }     
  }
  OneDrive.save(odOptions);
});

Следуя приведенной здесь документации, я решил мою проблему:

https://docs.microsoft.com/en-us/onedrive/developer/controls/file-pickers/js-v72/save-file

Другие вопросы по теме