Shinyproxy: تركيب shinyproxy لاستضافة نظام الملفات.

تم إنشاؤها على ٥ يناير ٢٠٢١  ·  8تعليقات  ·  مصدر: openanalytics/shinyproxy

لدي تطبيق لامع يمكن للمستخدمين من خلاله تحميل البيانات ، ومعالجة البيانات الموجودة في التطبيق ، ثم حفظ البيانات التي تم التلاعب بها في نظام الملفات المحلي الخاص بهم. يمكنني تشغيل هذا محليًا باستخدام shinyproxy باستخدام

container-volumes: ["/Users:/app_data"]

في التطبيق. iml. يؤدي هذا إلى تحميل نظام ملفات المستخدمين المضيفين (/ Users) إلى الحاوية (/ app_data). ومع ذلك ، عندما أنشر التطبيق على خادم بعيد ، لم يعد بإمكاني التحميل على نظام الملفات المضيف. أود أن يكون المستخدم قادرًا على الحفظ في نظام الملفات الخاص به. هل هذا ممكن؟ لقد جربت بعض البدائل لـ / المستخدمين مثل $ {HOME} دون نجاح.

شكرا لك.

question

ال 8 كومينتر

نعم ، يمكنك فعل ذلك باستخدام بناء الجملة مثل:

container-volumes: ["/home/#{proxy.userId}:/app_data"]

استخدام:
container-volumes: ["/home/#{proxy.userId}:/app_data"]
لا يزال يؤدي إلى عدم تمكني من الوصول إلى نظام ملفات المضيف عند نشر التطبيق على خادم بعيد. بالنسبة إلى السياق ، أستخدم shinyFileSave داخل التطبيق اللامع وهذا الرمز كالتالي:
roots <- c("Home Directory" = "/app_data")
shinyFileSave(input = input, id = 'save', roots = roots, session = session)
عندما أنشر تطبيقي عبر خادم بعيد واستخدم زر حفظ الملف ، يتم توصيلي بنظام ملفات فارغ بدون أي مجلدات بدلاً من نظام ملفات مضيف مع إمكانية الوصول إلى سطح المكتب وما إلى ذلك. هل أقوم بالتركيب على نظام ملفات المستخدم المضيف على جهاز تحكم Linux الخادم بدلا من نظام الملفات على سطح المكتب؟ أو ربما يتعلق الأمر بمسألة أذونات. في نهاية اليوم ، أود أن يتمكن المستخدم من حفظ ما أنشأه في تطبيق الويب على سطح المكتب. شكرا لك!

في حالة استخدامها ، إليك قائمة بالتصعيدات المختلفة التي حاولت القيام بها. لم يعمل أي منهم حتى الآن:

`container-volumes: ["${HOME}:/app_data"]`
`container-volumes: ["/$pwd:/app_data"]`
`container-volumes: ["$HOME:/app_data"]`
`container-volumes: ["/Users:/app_data"]`
`container-volumes: ["~:/app_data"]`
`container-volumes: ["/home/#{proxy.userId}:/app_data"]`

هل أقوم بالتوصيل إلى نظام ملفات المستخدم المضيف على خادم Linux البعيد بدلاً من نظام الملفات على سطح المكتب؟

نعم صحيح. إذا كان shinyproxy يعمل على خادم بعيد بنظام Linux ، فإن النظام المضيف هو ذلك الخادم البعيد ، والذي يمكنك الوصول إليه باستخدام وحدات التخزين.

في نهاية اليوم ، أود أن يتمكن المستخدم من حفظ ما أنشأه في تطبيق الويب على سطح المكتب.

ألا يكفي downloadButton في هذه الحالة؟ (https://shiny.rstudio.com/articles/download.html)

الحل downloadButton و downloadHandler ليس الحل المثالي ولكنه سيعمل. أعتقد أن هذا هو الحل الوحيد على الأرجح نظرًا لطبيعة ShinyProxy وأنه سيكون من المستحيل التحميل على سطح مكتب كمبيوتر مستخدم. شكرا للمساعدة!

"نظام ملفات المضيف" هو نظام ملفات الخادم البعيد. ما تريد تحقيقه هو حفظ الملف في نظام ملفات العميل؟ هذا غير ممكن في رأيي.

نعم ، كان الهدف الأصلي هو حفظ ملف في نظام ملفات العميل باستخدام shinyFileSave لكنني أوافق على أن هذا مستحيل.

مرحبًا @ lucius-verus-fan

أعتقد أنه تمت الإجابة على سؤالك الآن ، لذلك أغلق هذا الموضوع. كالعادة ، لا تتردد في فتح عدد جديد إذا كان لديك أي سؤال أو مشكلة أخرى.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات