Входящие загрузки файлов действительно представлены как объекты FileStorage
. Однако это означает, что not обязательно означает, что задействован фактический физический файл.
При анализе файловых объектов Werkzeug использует stream_factory()
, вызываемый для создания файлового объекта. Реализация по умолчанию создает фактический физический файл для файлов размером 500 кбайт и более, чтобы избежать потери памяти.
Для файлов less вместо этого используется файловый объект в памяти.
Я не буду вмешиваться в это соглашение; поскольку он работает прямо сейчас, проблема обрабатывается прозрачно, и ваш жесткий диск задействован только в том случае, если загрузка файлов в противном случае слишком сильно обременяет вашу память.
Скорее, я бы изменил эту функцию, чтобы не требовать имя файла и / или принять файл-объект.
Если ваша функция может принимать только путь или к содержащимся данным в виде строки, вы можете увидеть, нужно ли читать этот файл, исследуя основные .stream
:
from werkzeug._compat import BytesIO
filename = data = None
if file_upload.filename is None:
data = file_upload.read() # in-memory stream, so read it out.
else:
filename = file_upload.filename
Короткий ответ, да, вид. Можно использовать Objective C ++, о котором можно читать в Соединение Разработчика Apple.
, Если бы Вы уже знаете, C++, изучая Objective C был бы довольно прост, если бы Вы решили дать этому попытку. Больше информации о той теме в ADC также.
Прежде всего высказывание Objective C "безумно", является юмористическим - у меня есть книга C++ Bjarne Stroustrup, сидящая у моей стороны, которая начинает работу на уровне 1 020 страниц. PDF Apple на Objective C равняется 141.
, Если Вы хотите использовать UIKit, для Вас будет очень, очень трудно сделать что-либо в C++. Для любого серьезного приложения для iPhone, которое соответствует UI Apple, будет нужно, это - части UI, которые будут записаны в Objective C. Только если Вы пишете, что игра OpenGL может Вы придерживаться почти полностью C/C++.
Имея некоторый опыт этого, можно действительно использовать код C++ для "базового" кода, но необходимо использовать цель-C для чего-либо конкретный iPhone.
не пытаются вынудить Objective C действовать как C++. Сначала это будет казаться Вам, это возможно, но получающийся код действительно не будет работать хорошо с Какао, и Вы станете очень смущенными относительно того, что продолжается. Не торопитесь для изучения правильно без любого C++ вокруг, как создать графический интерфейсы пользователя и приложения для iPhone, затем свяжитесь в базе C++.
paint
или layout
операции, и конечно задержав любой onload
зависимости от события.
– Tom Auger
16 November 2011 в 21:20
Хотя Objective C, действительно кажется, "безумен" первоначально, я поощряю Вас придерживаться его. После того как у Вас есть момент "a-ha", внезапно все это начинает иметь смысл. Для меня потребовалось приблизительно 2 недели сфокусированной концентрации Objective C для реального понимания платформ Какао, языка, и как все это совмещается. Но после того как я действительно "получил" его, это было очень очень захватывающе.
Это звучит как clichГ©, но это верно. Высуньте его.
, Конечно, при введении библиотек C++ или существующего кода C++ можно использовать те модули с Objective-C/Objective-C ++.
Я использую Objective C для удара UI вместе.
, Но твердые кишки кода все еще записан в C++.
, Который является основной целью Objective C интерфейс UI и обработка событий.
И это работает отлично с этой целью.
мне все еще нравится C++ как бэкенд для кода, хотя (но это главным образом becuase, мне нравится C++) Вы могли довольно легко использовать Objective C для бэкенда приложения также.
В настоящее время я пишу платформу Objective-C ++ под названием Objective-X, которая делает возможным ПРОГРАММИРОВАНИЕ iPHONE на PURE C ++. Вы можете сделать это так:
#import "ObjectiveX.h"
void GUIApplicationMain() {
GUIAlert Alert;
GUILabel Label;
GUIScreen MainScreen;
Alert.set_text(@"Just a lovely alert box!");
Alert.set_title(@"Hello!");
Alert.set_button(@"Okay");
Alert.show();
Label.set_text(@"Ciao!");
Label.set_position(100, 200, 120, 40);
MainScreen.init();
MainScreen.addGUIControl(Label.init());
}
и скомпилировать его, используя соответствующие параметры командной строки GCC. Я уже скомпилировал это приложение helloworld, и оно похоже на очарование w0rkX0rz. ;-) Скоро он будет доступен в GoogleCode. Найдите Objective-X или посетите http://infotronix.orgfree.com/objectivex прибл. неделю спустя!
Обновленный (но явно неактивный) URL: http://code.google.com/p/objectivex/