Двоичная Потоковая поддержка направляющих

import React, { Component } from 'react';
import { View, Text, StyleSheet, TouchableOpacity, FlatList, Image, Button } from 'react-native';

export default class ListItems extends Component {
constructor(props) {
    super(props);
}

render() {
    return (
        <FlatList
            data={this.props.text}
            renderItem={(info) => (
                <TouchableOpacity onPress={() =>   this.props.selected(info.item.key)}>
                    <View style={styles.listitems}>
                      <View>
                        <Image resizeMode="contain" source={info.item.image} style={styles.image} />
                        <Text>{info.item.value}</Text>
                       <View>
                        <View style={styles.button}>
                        <Button title="Confirm" color="blue" onPress={this.props.itemDelete}></Button>
                        </View>
                    </View>
                </TouchableOpacity>
            )}
        >
        </FlatList>
        );
     }
 }

const styles = StyleSheet.create({
listitems: {
    width: "100%",
    flex:1,
    marginTop: 5,
    backgroundColor: "lightgrey",
    padding: 10,
    flexDirection: 'row',
    justifyContent:'space-between`enter code here`'
},
image: {
    marginRight: 8,
    height: 30,
    alignItems: "center",
    width: 40,
},
button: {
    width: "40%",
    alignItems: 'flex-end',
}
 })
15
задан Craig Walker 11 September 2008 в 20:46
поделиться

5 ответов

+1 для attachment_fu

я использую attachment_fu в одном из моих приложений и ДОЛЖЕН хранить файлы в DB (по раздражающим причинам, которые выходят за рамки этого convo).

(один?) хитрая вещь, имеющая дело, w/BLOB's, который я нашел, - то, что Вам нужен отдельный путь выполнения кода, чтобы отправить данные пользователю - Вы не можете просто встроить путь в файловой системе как Вы, был бы, если это был простой-Jane файл.

, например, если Вы храните информацию аватара, Вы не можете просто сделать:

<%= image_tag @youruser.avatar.path %>

необходимо записать некоторую логику обертки и использовать send_data, например, (ниже ПРОСТО пример w/attachment_fu, на практике необходимо было бы высушить это)

send_data(@youruser.avatar.current_data, :type => @youruser.avatar.content_type, :filename => @youruser.avatar.filename, :disposition => 'inline' )

, К сожалению, насколько я знаю attachment_fu (у меня нет последней версии), не делает умного обертывания для Вас - Вы имеете, должен записать это сами.

P.S. При наблюдении редактирования вопроса - Attachment_fu обрабатывает весь этот раздражающий материал, который Вы упоминаете - о необходимости знать пути к файлам и все это дерьмо - КРОМЕ того мало проблемы при хранении в DB.Попробуйте; это - стандарт для приложений для направляющих. ЕСЛИ Вы настаиваете на том, чтобы изобретать велосипед, исходный код для attachment_fu должен зарегистрировать большинство глюков, также!

8
ответ дан 1 December 2019 в 02:20
поделиться

Что касается потоковой передачи, можно выполнить во всем этом (по крайней мере, память-) эффективный путь. На стороне загрузки абстрагированы параметры файла в формах, поскольку IO возражает, что можно читать из; на стороне загрузки загляните к форме render :text =>, который берет аргумент Proc:

render :content_type => 'application/octet-stream', :text => Proc.new {
    |response, output|
    # do something that reads data and writes it to output
}

, Если Ваш материал находится в файлах на диске, тем не менее, вышеупомянутые решения будут, конечно, работать лучше.

13
ответ дан 1 December 2019 в 02:20
поделиться

Можно использовать эти :binary тип в миграции ActiveRecord и также ограничить максимальный размер:

class BlobTest < ActiveRecord::Migration
  def self.up
    create_table :files do |t|
      t.column :file_data, :binary, :limit => 1.megabyte
    end
  end
end

ActiveRecord выставляет BLOB (или CLOB) содержание как Строка Ruby.

5
ответ дан 1 December 2019 в 02:20
поделиться

Я думаю, что Ваш лучший выбор является attachment_fu плагином: http://github.com/technoweenie/attachment_fu/tree/master

ОБНОВЛЕНИЕ: Найденный еще некоторой информацией здесь http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/a81beffb93708bb3

3
ответ дан 1 December 2019 в 02:20
поделиться

Изучите плагин, x_send_file также.

"Плагин XSendFile обеспечивает простой интерфейс для отправки файлов через HTTP-заголовок X-Sendfile. Это позволяет Вашему веб-серверу служить файлу непосредственно от диска, вместо того, чтобы передать его потоком посредством Вашего процесса направляющих. Это быстрее и сохраняет большую память если you‘re с помощью Полукровки. Не каждый веб-сервер поддерживает этот заголовок. YMMV".

я не уверен, применимо ли это с Блобами, это может просто быть для файлов в файловой системе. Но Вам, вероятно, нужно что-то, что не связывает веб-сервер, передающий большие блоки потоком данных.

0
ответ дан 1 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

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