Движок Google App - создание новых каталогов - PullRequest
0 голосов
/ 25 декабря 2011

Я создал свое простое приложение.

Когда я перечисляю все файлы и каталоги из "."Дир, я все это получаю из каталога "Сеть".Моя цель - создать новый каталог в «сети» под названием «myfile».К сожалению, когда я щелкаю ссылку на странице (на которой выполняется следующий код), возникает исключение ...

Не могли бы вы сказать мне, как я могу создать файл / каталог в «сети»?* И мой второй вопрос:

Предполагается, что мое приложение больше и им пользуются несколько человек.Я хочу создать каталоги для всех из них, но так неудобно сохранять все это в моем «сетевом» каталоге.Можно ли создать другой сервер или занять другое место для «пользовательских файлов»?

Спасибо!

package myapp;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tools.ant.taskdefs.Mkdir;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class MyAppServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
        // getting logged user
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();

        // anybody is logged
        if (user != null) {
            resp.setContentType("text/plain");
            resp.getWriter().println("Hello, " + user.getNickname());




            File test = new File(".");
            String [] tab = test.list();
            // list of files before
            for (String el : tab) {
                resp.setContentType("text/plain");
                resp.getWriter().println("File ->, " + el);
            }

            File test2 = new File("./myfile");
            test2.mkdir();

            // list of files after
            for (String el : tab) {
                resp.setContentType("text/plain");
                resp.getWriter().println("File ->, " + el);
            }


        } else {
            resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
        }
    }
}

1 Ответ

2 голосов
/ 25 декабря 2011

GAE не имеет файловой системы.Прочитайте http://code.google.com/intl/en-US/appengine/docs/java/runtime.html#The_Sandbox:

Чтобы позволить App Engine распределять запросы приложений на несколько веб-серверов и предотвращать взаимодействие одного приложения с другим, оно запускается в ограниченной среде «песочницы».В этой среде приложение может выполнять код, хранить и запрашивать данные в хранилище данных App Engine, использовать почту App Engine, службы получения URL-адресов и службы пользователей, а также проверять веб-запрос пользователя и готовить ответ.

AnПриложение App Engine не может:

записать в файловую систему.Приложения должны использовать хранилище данных App Engine для хранения постоянных данных.Чтение из файловой системы разрешено, и все файлы приложения, загруженные вместе с приложением, доступны.

[...]

Ваш единственный вариант - использовать хранилище данных (и хранилище BLOB-объектов)

...