{"id":11188,"date":"2026-05-27T18:30:02","date_gmt":"2026-05-27T10:30:02","guid":{"rendered":"https:\/\/aeosub.com\/digiexpert8-forms-file-uploader-for-onedrive\/"},"modified":"2026-05-27T18:30:02","modified_gmt":"2026-05-27T10:30:02","slug":"digiexpert8-forms-file-uploader-for-onedrive","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/digiexpert8-forms-file-uploader-for-onedrive\/","title":{"rendered":"DigiExpert8 Forms File Uploader for OneDrive"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/digiexpert8-forms-file-uploader-for-onedrive\/assets\/banner-772x250.png?rev=3550458\" alt=\"DigiExpert8 Forms File Uploader for OneDrive\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/digiexpert8-forms-file-uploader-for-onedrive\/assets\/icon-256x256.png?rev=3550458\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/digiexpert8\/\" target=\"_blank\" rel=\"noopener\">DigiExpert<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.1.3<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.2 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-27 10:27am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/digiexpert8-forms-file-uploader-for-onedrive\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Uploads Gravity Forms, WPForms, and Contact Form 7 files to Microsoft OneDrive with secure OAuth and configurable filtering.<\/div>\n<p>DigiExpert8 Forms File Uploader for OneDrive is an independent plugin and is not affiliated with, endorsed by, or sponsored by Microsoft.<\/p>\n<p>The plugin provides:<\/p>\n<ul>\n<li>Microsoft OAuth2 connection flow for OneDrive.<\/li>\n<li>Gravity Forms, WPForms, and Contact Form 7 file upload support.<\/li>\n<li>Form ID and Field ID filtering per provider.<\/li>\n<li>Folder templates always control the OneDrive folder path and support placeholders: <code>{form_title}<\/code>, <code>{provider}<\/code>, <code>{form_id}<\/code>, <code>{entry_id}<\/code>, <code>{date}<\/code>, <code>{submission_folder}<\/code>.<\/li>\n<li>Field placeholders are supported, including Gravity Forms and WPForms values like <code>{field_3}<\/code>, Gravity sub-inputs like <code>{field_1_3}<\/code>, and name-based placeholders like <code>{passport_number}<\/code>, <code>{full_name}<\/code>, or <code>{applicant_name}<\/code>.<\/li>\n<li>Optional Gravity Forms entry PDF summary upload.<\/li>\n<li>Optional local file deletion after successful upload.<\/li>\n<li>Encrypted storage for client secret and tokens.<\/li>\n<\/ul>\n<h3>External Services<\/h3>\n<p>This plugin connects to Microsoft OneDrive through Microsoft Graph.<\/p>\n<p>It sends data to Microsoft only when:<br \/>\n* an administrator clicks <code>Connect OneDrive<\/code> and completes OAuth authorization<br \/>\n* a configured form submission triggers a file upload to OneDrive<br \/>\n* optional Gravity Forms PDF summary upload is enabled and a PDF summary is uploaded<\/p>\n<p>Data sent to Microsoft may include:<br \/>\n* OAuth authorization data required to obtain access and refresh tokens<br \/>\n* uploaded file contents<br \/>\n* remote folder and file names built from plugin settings and form submission context<\/p>\n<p>Folder template examples:<br \/>\n* <code>{form_title}_{field_3}_{field_48}_{entry_id}<\/code><br \/>\n* <code>IDLV_Alex Smith_A1234567_987<\/code><br \/>\n* <code>{form_title}_{full_name}_{passport_number}_{entry_id}<\/code><br \/>\n* <code>{provider}\/{form_id}\/{field_3}\/{entry_id}<\/code><br \/>\n* <code>{provider}\/{form_id}\/{field_1_3}-{field_1_6}\/{entry_id}<\/code><br \/>\n* <code>{provider}\/{form_id}\/{submission_folder}<\/code><\/p>\n<p>Service provider:<br \/>\n* Microsoft OneDrive \/ Microsoft Graph<\/p>\n<p>Service documentation and terms:<br \/>\n* Microsoft Graph: https:\/\/learn.microsoft.com\/graph\/overview<br \/>\n* Microsoft Terms of Use: https:\/\/www.microsoft.com\/servicesagreement<br \/>\n* Microsoft Privacy Statement: https:\/\/privacy.microsoft.com\/privacystatement<\/p>\n<h3>Troubleshooting<\/h3>\n<ul>\n<li><code>AADSTS50011<\/code> redirect mismatch:\n<ul>\n<li>The Redirect URI in Entra must exactly match the plugin value, including protocol (<code>https:\/\/<\/code>), domain, path, and trailing slash behavior.<\/li>\n<\/ul>\n<\/li>\n<li><code>OneDrive connection failed<\/code> after clicking Connect:\n<ul>\n<li>Save settings first and confirm Tenant ID, Client ID, and Client Secret are not empty.<\/li>\n<li>If secret is regenerated in Entra, paste new secret Value in plugin and save again.<\/li>\n<\/ul>\n<\/li>\n<li>Permission errors from Graph:\n<ul>\n<li>Confirm <code>Files.ReadWrite<\/code> is delegated permission (not application permission).<\/li>\n<li>Confirm consent was granted in the same tenant\/account you sign in with.<\/li>\n<\/ul>\n<\/li>\n<li>Upload size issues:\n<ul>\n<li>Current upload call uses Microsoft Graph simple upload (<code>PUT ...\/content<\/code>), which supports up to 250 MB per file.<\/li>\n<li>Resumable\/chunked upload sessions are not implemented in this plugin version.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Security Notes<\/h3>\n<ul>\n<li>Only users with <code>manage_options<\/code> can configure or connect OneDrive.<\/li>\n<li>OAuth state is validated to prevent CSRF.<\/li>\n<li>Settings forms and actions use WordPress nonces.<\/li>\n<li>Secrets and tokens are encrypted at rest using site salts.<\/li>\n<li>Upload path building sanitizes all path segments.<\/li>\n<li>Local path resolution is restricted to the WordPress uploads directory.<\/li>\n<\/ul>\n<h3>Known Limits<\/h3>\n<ul>\n<li>This version uploads immediately on form completion.<\/li>\n<li>Large\/resumable upload sessions are not yet implemented.<\/li>\n<li>Upload retries\/queue management are not yet implemented.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Uploads Gravity Forms, WPForms, and Contact Form 7 files to Microsoft OneDrive with secure OAuth and configurable filtering.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[912,1536,2262,2263,555,920],"class_list":["post-11188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-contact-form-7","tag-gravity-forms","tag-microsoft-graph","tag-onedrive","tag-wordpress-plugin","tag-wpforms"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11188"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11188\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}