سؤال

أحاول تحميل ملف في GAE باستخدام API blobstore. أحصل على الاستثناء التالي عند تشغيل خادم GAE محليًا (وضع dev):

WARNING: /_ah/upload/ag10cmlwc2NoZWR1bGVychsLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YFQw
java.lang.IllegalStateException: Must call one of set*BlobStorage() first.
 at com.google.appengine.api.blobstore.dev.BlobStorageFactory.getBlobStorage(BlobStorageFactory.java:24)
 at com.google.appengine.api.blobstore.dev.UploadBlobServlet.init(UploadBlobServlet.java:88)
 at javax.servlet.GenericServlet.init(GenericServlet.java:215)
 at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
 at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
 at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)

أنا أقوم بتشغيل GAE 1.3.5 ولكن لقد جربت جميع الإصدارات منذ GAE 1.3.0 (الإصدار الأول مع blobstore). أنا أستخدم البرنامج المساعد GAE Maven: http://code.google.com/p/maven-gae-plugin/

نقيمي مكتوب في GWT 2.0.4. حاليا ، النموذج هو مجرد حقل إدخال الملف مع إرسال.

أتلقى الاستثناء أعلاه بعد تقديم النموذج. أنا قادر على استرداد عنوان URL للتحميل بنجاح من خدمة blobstore.

كل شيء يعمل بشكل جيد على GAE. لقد تحقق من أنه لم يتم إدخال أي شيء في blobstore في بلدي Dev Env المحلي (عبر وحدة Dev Admin). أقوم بتحميل CSV الذي يبلغ 1 كيلو بايت ، لكن جربت أنواع/أحجام ملفات أخرى أيضًا دون نجاح (تعمل نفس الملفات على GAE Prod).

هل كانت مفيدة؟

المحلول 2

كانت المشكلة ناتجة عن وجود كعبان واختبار الجرار المدرجة في ClassPath عند تشغيل خادم تطبيق DEV. إذا كنت تستخدم Maven ، فما عليك سوى تغيير نطاق التبعية:

<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-testing</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>

إذا كنت لا تستخدم Maven ، فتأكد من أن هذه الجرار ليست في الويب/LIB أو ClassPath.

نصائح أخرى

عند الاتصال بصفحتك التي تنشئ HTML (باستخدام Servlet ، JSP ، إلخ) والمكالمات blobstoreService.createUploadUrl("/upload"); لا يمكنك إعادة استخدام هذه الصفحة عدة مرات.

إعادة تحميل هذه الصفحة في متصفح كل مره تريد تحميل الملف.

$ mvn clean gae:run -DskipTest 

تناسبني

أنا لا أستخدم Maven ، فقط Eclipse و GAE Plugins. أنا أيضا لم أر أي اختبار. لقد قمت بحذف تكوين التشغيل في Eclipse وأعاد تشغيله وعمل. لا فكرة عن الخطأ الذي حدث ، لكن هذا إصلاح المشكلة بالنسبة لي أثناء الركض في الوضع المحلي.

إذا لم تستخدم Maven ولكن Eclipse مع البرنامج المساعد:

إزالة التكوين تشغيل/تصحيح. لإنشاء جديد ، ما عليك سوى النقر بزر الماوس الأيمن على المشروع وحدد Run/Debug As> تطبيق الويب

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top