Архивирование динамических файлов в Механизме Приложения (Python)

То, что вы хотите сделать, это передать опцию :path

resources :apples, :path => "cars"

Это заменит все ваши ссылки на маршруты с /apples до /cars

См .: http://guides.rubyonrails.org/routing.html , раздел 4.7 Перевод путей

.

6
задан checker659 8 June 2009 в 07:38
поделиться

3 ответа

Вы можете добавить все, что хотите, в zip-файл, используя ZipFile.writestr () :

my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)

Вы также можете использовать подпапки, используя / ] (или os.sep ) в качестве разделителя:

z.writestr("site/foo/hello/index.html", my_data)
7
ответ дан 8 December 2019 в 04:55
поделиться

Самый чистый способ - это, вероятно, зарегистрируйте собственный DataBinder для возможных форматов даты.

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CustomDateBinder extends PropertyEditorSupport {

    private final List<String> formats;

    public CustomDateBinder(List formats) {
        List<String> formatList = new ArrayList<String>(formats.size());
        for (Object format : formats) {
            formatList.add(format.toString()); // Force String values (eg. for GStrings)
        }
        this.formats = Collections.unmodifiableList(formatList);
    }

    @Override
    public void setAsText(String s) throws IllegalArgumentException {
        if (s != null)
            for (String format : formats) {
                // Need to create the SimpleDateFormat every time, since it's not thead-safe
                SimpleDateFormat df = new SimpleDateFormat(format);
                try {
                    setValue(df.parse(s));
                    return;
                } catch (ParseException e) {
                    // Ignore
                }
            }
    }
}

Вам также потребуется реализовать PropertyEditorRegistrar

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;

import grails.util.GrailsConfig;
import java.util.Date;
import java.util.List;

public class CustomEditorRegistrar implements PropertyEditorRegistrar {
    public void registerCustomEditors(PropertyEditorRegistry reg) {
        reg.registerCustomEditor(Date.class, new CustomDateBinder(GrailsConfig.get("grails.date.formats", List.class)));
    }
}          

и создать определение Spring-bean в вашем grails-app / conf / spring / resources.groovy:

beans = {
    "customEditorRegistrar"(CustomEditorRegistrar)
}

и, наконец, определите форматы даты в вашем grails-app / conf / Config.groovy:

3
ответ дан 8 December 2019 в 04:55
поделиться

Рабочий код: (для движка приложения:)

output = StringIO.StringIO()
z = zipfile.ZipFile(output,'w')
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
z.close()

self.response.headers["Content-Type"] = "multipart/x-zip"
self.response.headers['Content-Disposition'] = "attachment; filename=test.zip"
self.response.out.write(output.getvalue())

Еще раз спасибо Шнуки и Райану.

14
ответ дан 8 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: