Каталог для получения файлов не определен

Обновлено: 02.07.2024

Хотя вы можете загружать изображения в интерфейсе, вам потребуется реализовать API и базу данных на сервере для их получения. С помощью Multer и Express, платформы Node.js, вы можете установить загрузку файлов и изображений в одном параметре.

В этой статье вы узнаете, как загружать изображения с серверной частью Node.js, используя Multer и Express.

Предпосылки

Рекомендуется понимание Node.js. Чтобы узнать больше о Node.js, ознакомьтесь с нашей серией статей «Как программировать в Node.js».

Шаг 1 — Настройка проекта

Поскольку Express – это платформа Node.js, перед выполнением следующих шагов убедитесь, что Node.js установлен из Node.js. Запустите в своем терминале следующее:

Создайте новый каталог с именем node-multer-express для вашего проекта:

Перейдите в новый каталог:

Инициализируйте новый проект Node.js со значениями по умолчанию. Это будет включать ваш файл package.json для доступа к вашим зависимостям:

Создайте файл ввода index.js . Здесь вы будете обрабатывать свою логику Express:

Установите Multer, Express и morgan в качестве зависимостей:

Multer — это ваша библиотека для загрузки изображений, которая управляет доступом к данным формы из экспресс-запроса. morgan — промежуточное ПО Express для регистрации сетевых запросов.

Применение Multer в вашем проекте

Чтобы настроить библиотеку Multer, используйте метод .diskStorage(), чтобы указать Express, где хранить файлы на диске. В файле index.js потребуйте Multer, объявите переменную хранилища и присвойте ей значение при вызове метода .diskStorage():

Свойство назначения в методе diskStorage() определяет, в каком каталоге будут храниться файлы. Здесь файлы будут храниться в каталоге my-images. Если вы не указали место назначения , операционная система по умолчанию выберет каталог для временных файлов.

Свойство filename указывает, как назвать ваши файлы. Если вы не укажете имя файла, Multer вернет случайно сгенерированное имя для ваших файлов.

Примечание. Multer не добавляет расширения к именам файлов, поэтому рекомендуется возвращать имя файла вместе с расширением.

После завершения настройки Multer давайте объединим его с вашим сервером Express.

Шаг 2. Работа с экспресс-сервером

В файле index.js объявите переменную приложения и присвойте ее значение экземпляру Express. Требовать в Multer и morgan и объявить переменную загрузки для хранения экземпляра Multer:

После того как вы установили свои глобальные переменные, установите запрос POST, который принимает анонимный маршрут, а также обратный вызов req и response для получения новых файлов и изображений:

Когда анонимный маршрут получает файл или изображение, Multer сохраняет их в указанный вами каталог. Второй аргумент в вашем запросе POST, upload.single() — это встроенный метод Multer для сохранения файла со свойством fieldname и сохранения его в объекте Express req.file. Свойство fieldname определено в вашем методе Multer .diskStorage().

Если вы интегрируете базу данных, вы можете потребовать имя файла в вашем файле index.js:

Сохраните переменную filePath в базе данных и работайте с базой данных с входящими именами файлов.

Заключение

Express предоставляет вам процесс для сохранения и хранения входящих файлов и изображений на вашем сервере. Зависимость промежуточного программного обеспечения Multer оптимизирует данные формы для обработки нескольких загрузок файлов.

Если вы хотите узнать больше о Node.js, ознакомьтесь с нашей серией статей How To Code in React.js или посетите нашу тематическую страницу Node.js, где вы найдете упражнения и проекты по программированию.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Вы запускаете FTP 7.5 на компьютере под управлением Windows 7 или Windows Server 2008 R2. При использовании команды FTP NLST на компьютере может возникнуть проблема, описанная в одном из следующих сценариев.

Сценарий 1

Команда NLST не возвращает полный виртуальный путь. Поэтому клиентские программы, использующие команду NLST, могут работать неправильно.

Рассмотрите следующий сценарий:

У вас есть FTP-сайт, который указывает на следующий каталог на FTP-сервере:

Вы создаете подкаталог с именем Test в каталоге Ftproot.

Вы добавляете файл с именем Test.txt в подкаталог Test. Например, вы добавляете файл Test.txt в следующий каталог:

Вы используете утилиту FTP.exe для подключения к сайту FTP, а затем запускаете следующую команду, чтобы скопировать файл Test.txt на локальный компьютер:

MGET /Test/*.txtПримечание. Утилита FTP.exe — это FTP-клиент командной строки, устанавливаемый Windows.

В этом случае команда MGET завершается ошибкой. Кроме того появляется следующее сообщение об ошибке:

200 Команда EPRT выполнена успешно.
550-Система не может найти указанный файл.
Ошибка Win32: Система не может найти указанный файл.
Сведения об ошибке: Файловая система вернула ошибку.
550 Конец

Сценарий 2

Команда NLST FTP возвращает код ошибки 550, если файл не найден. Однако вы ожидаете получить сообщение «226 Передача завершена» в этой ситуации, как и в FTP 6. Поэтому клиентские программы, использующие код ошибки 226, могут работать неправильно.

Рассмотрите следующий сценарий:

У вас есть FTP-сайт, который указывает на следующий каталог на FTP-сервере:

Вы создаете подкаталог с именем Test в каталоге Ftproot.

Вы добавляете сжатый файл с расширением .zip в подкаталог Test. Например, вы добавляете ZIP-файл в следующий каталог:

В корневом каталоге FTP-сайта нет ZIP-файлов.

Вы используете служебную программу FTP.exe для подключения к сайту FTP, а затем запускаете следующую команду, чтобы получить список ZIP-файлов в подкаталоге Test:

ls *.zipПримечание. Утилита FTP.exe — это FTP-клиент командной строки, устанавливаемый Windows.

В этом сценарии ZIP-файлы не указаны. Кроме того появляется следующее сообщение об ошибке:

200 Команда EPRT выполнена успешно.
550-Система не может найти указанный файл.
Ошибка Win32: Система не может найти указанный файл.
Сведения об ошибке: Файловая система вернула ошибку.
550 Конец

Разрешение

Чтобы решить эту проблему, примените это исправление к компьютеру, на котором установлен FTP 7.5.

Подробнее об этом исправлении

Информация об исправлении

Поддерживаемое исправление доступно в Microsoft. Однако это исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте это исправление только к системам, в которых возникла проблема, описанная в этой статье. Это исправление может пройти дополнительное тестирование. Поэтому, если эта проблема не оказывает серьезного влияния на вас, мы рекомендуем дождаться следующего обновления программного обеспечения, содержащего это исправление.

Если исправление доступно для загрузки, в верхней части этой статьи базы знаний есть раздел «Исправление доступно для загрузки». Если этот раздел не отображается, обратитесь в службу поддержки клиентов Майкрософт, чтобы получить исправление.

Примечание. Если возникают дополнительные проблемы или требуется их устранение, вам может потребоваться создать отдельный запрос на обслуживание. Обычная стоимость поддержки будет применяться к дополнительным вопросам поддержки и проблемам, которые не подходят для этого конкретного исправления. Чтобы получить полный список номеров телефонов службы поддержки и обслуживания клиентов Майкрософт или создать отдельный запрос на обслуживание, посетите следующий веб-сайт Майкрософт:

http://support.microsoft.com/contactus/?ws=supportПримечание. В форме «Исправление доступно для загрузки» отображаются языки, для которых доступно исправление. Если вы не видите свой язык, это означает, что для него недоступно исправление.

Предпосылки

Чтобы применить это исправление, на компьютере под управлением Windows 7 или Windows Server 2008 R2 должен быть установлен FTP 7.5.

Информация о перезапуске

Возможно, вам придется перезагрузить компьютер, если во время установки этого исправления запущена служба Microsoft FTP. Чтобы избежать перезагрузки компьютера, остановите службу Microsoft FTP перед установкой исправления.

Информация о файлах Windows 7 и Windows Server 2008 R2

В английской версии этого исправления используются атрибуты файла (или более поздние атрибуты файла), указанные в следующей таблице. Даты и время для этих файлов указаны в формате всемирного координированного времени (UTC). Когда вы просматриваете информацию о файле, она преобразуется в местное время. Чтобы узнать разницу между временем в формате UTC и местным временем, используйте вкладку "Часовой пояс" элемента "Дата и время" на панели управления.

Multer — это ПО промежуточного слоя node.js для обработки multipart/form-data , которое в основном используется для загрузки файлов. Он написан поверх официанта для максимальной эффективности.

ПРИМЕЧАНИЕ. Multer не будет обрабатывать формы, не являющиеся составными ( multipart/form-data ).

Переводы

Этот файл README также доступен на других языках:

    (испанский) (китайский) (корейский) (русский) (Вьетнам) (португальский, Бразилия)

Установка

Использование

Multer добавляет объект тела и объект файла или файлов к объекту запроса. Объект body содержит значения текстовых полей формы, объект file или files содержит загруженные через форму файлы.

Пример базового использования:

Не забудьте enctype="multipart/form-data" в своей форме.

Если вам нужно обработать составную форму, состоящую только из текста, следует использовать метод .none():

Вот пример использования multer в HTML-форме.Обратите особое внимание на поля enctype="multipart/form-data" и name="uploaded_file":

Затем в файле javascript вы должны добавить эти строки для доступа как к файлу, так и к телу. Важно, чтобы вы использовали значение поля имени из формы в вашей функции загрузки. Это сообщает multer, в каком поле запроса он должен искать файлы. Если эти поля не совпадают в HTML-форме и на вашем сервере, ваша загрузка не будет выполнена:

Информация о файле

Каждый файл содержит следующую информацию:

< td>DiskStorage
Ключ Описание Примечание
fieldname Имя поля, указанное в форме
originalname Имя файла на компьютере пользователя
кодировка Тип кодировки файла
MIME-тип MIME-тип файла
size Размер файла в байтах
назначение Папка в котором был сохранен файл DiskStorage
filename Имя файла в месте назначения
path Полный путь к загруженному файлу DiskStorage
buffer Буфер всего файла MemoryStorage

множество(параметры)

Multer принимает объект параметров, самым основным из которых является свойство dest, сообщающее Multer, куда загружать файлы. Если вы опустите объект параметров, файлы будут храниться в памяти и никогда не будут записываться на диск.

По умолчанию Multer переименовывает файлы во избежание конфликтов имен. Функцию переименования можно настроить в соответствии с вашими потребностями.

Ниже приведены параметры, которые можно передать в Multer.

< td>Где хранить файлы
Ключ Описание
назначение или хранилище
fileFilter Функция контроля принимаемых файлов
лимиты Ограничения загружаемых данных
preservePath Сохранять полный путь к файлам, а не только базовое имя

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

Если вы хотите больше контролировать свои загрузки, вам следует использовать вариант хранения вместо пункта назначения. Multer поставляется с механизмами хранения данных DiskStorage и MemoryStorage; Другие механизмы доступны от третьих сторон.

.single(имя поля)

Принять один файл с именем fieldname . Один файл будет храниться в req.file .

.array(имя поля[, maxCount])

Принять массив файлов, все с именем fieldname . Опционально выдавать ошибку, если загружено больше файлов, чем maxCount. Массив файлов будет храниться в req.files .

.fields(поля)

Принимать набор файлов, указанный в полях . Объект с массивами файлов будет храниться в req.files .

поля должны быть массивом объектов с именем и, необязательно, maxCount . Пример:

Допускать только текстовые поля. При загрузке любого файла будет выдана ошибка с кодом «LIMIT_UNEXPECTED_FILE».

Принимает все файлы, поступающие по сети. Массив файлов будет храниться в req.files .

ВНИМАНИЕ! Убедитесь, что вы всегда обрабатываете файлы, которые загружает пользователь. Никогда не добавляйте multer в качестве глобального промежуточного программного обеспечения, поскольку злоумышленник может загружать файлы по маршруту, который вы не ожидали. Используйте эту функцию только на маршрутах, где вы обрабатываете загруженные файлы.

хранилище

Дисковое хранилище

Ядро дискового хранилища дает вам полный контроль над хранением файлов на диске.

Доступны две опции: пункт назначения и имя файла . Обе эти функции определяют, где должен храниться файл.

Назначение используется для определения папки, в которой должны храниться загруженные файлы. Это также может быть указано в виде строки (например, '/tmp/uploads'). Если место назначения не указано, используется каталог операционной системы по умолчанию для временных файлов.

Примечание. Вы несете ответственность за создание каталога при указании пункта назначения в качестве функции. При передаче строки multer проследит за тем, чтобы каталог был создан именно для вас.

имя_файла используется для определения имени файла внутри папки. Если имя файла не указано, каждому файлу будет присвоено случайное имя, не включающее расширение файла.

Примечание: Multer не будет добавлять расширение файла за вас, ваша функция должна возвращать имя файла с расширением файла.

Каждой функции передается как запрос ( req ), так и некоторая информация о файле ( file ), помогающая принять решение.

Обратите внимание, что req.body может быть еще не заполнен полностью. Это зависит от порядка, в котором клиент передает поля и файлы на сервер.

Чтобы понять соглашение о вызовах, используемое в обратном вызове (необходимо передать null в качестве первого параметра), обратитесь к обработке ошибок Node.js

Память

Подсистема хранения в памяти хранит файлы в памяти как объекты Buffer. У него нет никаких параметров.

При использовании хранилища в памяти информация о файле будет содержать поле, называемое буфером, которое содержит весь файл.

ВНИМАНИЕ! Очень быстрая загрузка очень больших файлов или относительно небольших файлов в большом количестве может привести к тому, что вашему приложению не хватит памяти при использовании памяти.

лимиты

Объект, определяющий пределы размера следующих необязательных свойств. Multer передает этот объект прямо в официанта, а подробности о свойствах можно найти на странице официанта.

Доступны следующие целочисленные значения:

< td>files
Ключ Описание По умолчанию
fieldNameSize Максимальный размер имени поля 100 байт
fieldSize Максимальный размер значения поля (в байтах ) 1MB
fields Максимальное количество нефайловых полей Бесконечность
fileSize Для составных форм максимальный размер файла (в байтах) Бесконечность
Для составных форм максимальное количество полей файла Бесконечность
parts Для составных форм максимальное количество частей (полей + файлов) Бесконечность
headerPairs Для составных форм максимальное количество пар ключ=>значение заголовка для анализа 2000

Указание ограничений может помочь защитить ваш сайт от атак типа "отказ в обслуживании" (DoS).

Фильтр файлов

Установите эту функцию для управления тем, какие файлы следует загружать, а какие пропускать. Функция должна выглядеть так:

Обработка ошибок

При обнаружении ошибки Multer делегирует ее в Express. Вы можете отобразить красивую страницу с ошибкой, используя стандартный экспресс-способ.

Если вы хотите перехватывать ошибки именно из Multer, вы можете самостоятельно вызвать функцию промежуточного программного обеспечения. Кроме того, если вы хотите перехватывать только ошибки Multer, вы можете использовать класс MulterError, присоединенный к самому объекту multer (например, err instanceof multer.MulterError ).

Пользовательский механизм хранения

Информацию о том, как создать собственный механизм хранения, см. в разделе Multer Storage Engine.

Лицензия


Переводы документации, предоставленные StrongLoop/IBM: французский, немецкий, испанский, итальянский, японский, русский, китайский, традиционный китайский, корейский, португальский.
Перевод сообщества доступен для следующих языков: словацкий, украинский, узбекский, турецкий и тайский.

Эта работа находится под лицензией Creative Commons Attribution-ShareAlike 3.0 United States License.

С ошибками сталкивается каждый программист, как тот, кто только начинает, так и те, кто программирует годами. Столкновение с ошибками и исключениями может иногда сильно разочаровывать, и кодирование может казаться безнадежным занятием. Однако понимание того, какие существуют типы ошибок и когда вы, вероятно, столкнетесь с ними, может очень помочь. Как только вы узнаете, почему возникают определенные типы ошибок, их станет намного проще исправить.

Ошибки в Python имеют очень специфическую форму, называемую трассировкой. Давайте рассмотрим один:

Эта конкретная обратная трассировка имеет два уровня. Вы можете определить количество уровней, глядя на количество стрелок с левой стороны. В этом случае:

В первом показан код из ячейки выше со стрелкой, указывающей на строку 8 (фаворит_ice_cream() ).

Во втором показан код в функции favourite_ice_cream со стрелкой, указывающей на строку 6 (то есть print(ice_creams[3])).

Последний уровень — это фактическое место, где произошла ошибка. Другие уровни показывают, какую функцию выполнила программа, чтобы перейти на следующий уровень вниз. Итак, в данном случае программа сначала выполнила вызов функции favourite_ice_cream. Внутри этой функции программа обнаружила ошибку в строке 6 при попытке запустить код print(ice_creams[3]) .

Длинные трассировки

Иногда вы можете увидеть очень длинную трассировку — иногда она может достигать даже 20 уровней! Это может создать впечатление, будто произошло что-то ужасное, но на самом деле это просто означает, что ваша программа вызвала много функций, прежде чем столкнулась с ошибкой. В большинстве случаев вы можете просто обратить внимание на самый нижний уровень, который является фактическим местом, где произошла ошибка.

Так с какой же ошибкой на самом деле столкнулась программа? В последней строке трассировки Python услужливо сообщает нам категорию или тип ошибки (в данном случае это IndexError ) и более подробное сообщение об ошибке (в данном случае оно говорит «список индексов вне допустимого диапазона»).

Если вы столкнулись с ошибкой и не знаете, что она означает, все же важно внимательно прочитать трассировку. Таким образом, если вы исправляете ошибку, но сталкиваетесь с новой, вы можете сказать, что ошибка изменилась. Кроме того, иногда достаточно просто знать, где произошла ошибка, чтобы исправить ее, даже если вы не совсем понимаете сообщение.

Если вы столкнулись с неизвестной вам ошибкой, попробуйте просмотреть официальную документацию по ошибкам. Однако обратите внимание, что вы не всегда сможете найти там ошибку, так как можно создавать собственные ошибки. В этом случае мы надеемся, что пользовательское сообщение об ошибке будет достаточно информативным, чтобы помочь вам понять, что пошло не так.

Синтаксические ошибки

Если вы забудете двоеточие в конце строки, случайно добавите на один пробел больше, чем нужно при отступе под оператором if, или забудете круглую скобку, вы столкнетесь с синтаксической ошибкой. Это означает, что Python не смог понять, как читать вашу программу. Это похоже на забвение знаков препинания в английском языке: например, этот текст трудно читать, здесь нет знаков препинания, а также нет заглавных букв, почему это сложно, потому что вы должны выяснить, где заканчивается каждое предложение, вы также должны выяснить, где каждое предложение начинается в некоторой степени, может быть двусмысленно, должен ли быть разрыв предложения или нет

Обычно люди могут понять, что имеется в виду под текстом без знаков препинания, но люди гораздо умнее компьютеров. Если Python не умеет читать программу, он просто сдастся и сообщит вам об ошибке. Например:

Здесь Python сообщает нам, что в строке 1 есть ошибка SyntaxError, и даже ставит маленькую стрелку в том месте, где возникла проблема. В этом случае проблема заключается в том, что в определении функции отсутствует двоеточие в конце.

На самом деле в приведенной выше функции есть две проблемы с синтаксисом. Если мы исправим проблему с двоеточием, мы увидим, что также возникает ошибка IndentationError , что означает, что строки в определении функции не имеют одинакового отступа:

И SyntaxError, и IndentationError указывают на проблему с синтаксисом вашей программы, но ошибка IndentationError более конкретна: она всегда означает, что существует проблема с отступом в вашем коде.

Вкладки и пробелы

Некоторые ошибки отступов обнаружить труднее, чем другие. В частности, смешивание пробелов и табуляции может быть трудно обнаружить, потому что они оба являются пробелами. В примере ниже первые две строки в теле функции some_function имеют отступ табуляции, а третья строка — пробелы. Если вы работаете в блокноте Jupyter, обязательно скопируйте и вставьте этот пример, а не пытайтесь вводить его вручную, поскольку Jupyter автоматически заменяет табуляцию пробелами.

Визуально обнаружить ошибку невозможно. К счастью, Python не позволяет смешивать табуляции и пробелы.

Ошибки имени переменной

Другой очень распространенный тип ошибки называется NameError и возникает, когда вы пытаетесь использовать несуществующую переменную. Например:

Ошибки имени переменной сопровождаются одними из самых информативных сообщений об ошибках, которые обычно имеют вид «имя ‘имя_переменной’ не определено».

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

Во-вторых, вы просто забыли создать переменную перед ее использованием. В следующем примере count должен быть определен (например, с count = 0 ) перед циклом for:

Наконец, третья возможность заключается в том, что вы допустили опечатку при написании кода. Допустим, мы исправили ошибку выше, добавив строку Count = 0 перед циклом for. К сожалению, на самом деле это не исправляет ошибку. Помните, что переменные чувствительны к регистру, поэтому переменная count отличается от Count . Мы по-прежнему получаем ту же ошибку, потому что мы до сих пор не определили count :

Ошибки индекса

Далее следуют ошибки, связанные с контейнерами (такими как списки и строки) и элементами внутри них. Если вы попытаетесь получить доступ к несуществующему элементу списка или строке, вы получите сообщение об ошибке. В этом есть смысл: если вы спросите кого-нибудь, в какой день они хотели бы выпить кофе, и они ответят «в субботу», вы можете немного разозлиться. Python также раздражается, если вы пытаетесь запросить несуществующий элемент:

Здесь Python сообщает нам, что в нашем коде есть ошибка IndexError, означающая, что мы попытались получить доступ к несуществующему индексу списка.

Ошибки файлов

Последний тип ошибок, который мы сегодня рассмотрим, связан с чтением и записью файлов: FileNotFoundError . Если вы попытаетесь прочитать файл, который не существует, вы получите FileNotFoundError, сообщающий вам об этом.Если вы попытаетесь записать в файл, открытый только для чтения, Python 3 вернет UnsupportedOperationError. В более общем случае проблемы с вводом и выводом проявляются как ошибки IOError или OSError, в зависимости от используемой версии Python.

Одной из причин появления этой ошибки является то, что вы указали неверный путь к файлу. Например, если я сейчас нахожусь в папке с именем myproject и у меня есть файл в myproject/writing/myfile.txt, но я пытаюсь просто открыть myfile.txt, это не удастся. Правильный путь будет писать/myfile.txt. Также возможно (как в случае с NameError ), что вы только что сделали опечатку.

Связанная проблема может возникнуть, если вы используете флаг «чтение» вместо флага «запись». Python не выдаст вам ошибку, если вы попытаетесь открыть файл для записи, когда файл не существует. Однако, если вы хотели открыть файл для чтения, но случайно открыли его для записи, а затем попытались прочитать из него, вы получите ошибку UnsupportedOperation, говорящую о том, что файл не был открыт для чтения:

Это наиболее распространенные ошибки с файлами, хотя существует и множество других. Если вы столкнулись с ошибкой, которую вы никогда раньше не видели, поиск в Интернете по этому типу ошибки часто позволяет выявить распространенные причины, по которым вы можете получить эту ошибку.

Чтение сообщений об ошибках

  1. Сколько уровней имеет трассировка?
  2. Как называется функция, в которой произошла ошибка?
  3. В какой строке этой функции возникла ошибка?
  4. Какой тип ошибки?
  5. Что такое сообщение об ошибке?

Решение

  1. 3 уровня
  2. print_message
  3. 11
  4. Ошибка ключа
  5. На самом деле сообщения нет; вы должны сделать вывод, что пятница не является ключевой в сообщениях .

Выявление синтаксических ошибок

  1. Прочитайте приведенный ниже код и (не запуская его) попытайтесь определить, в чем заключаются ошибки.
  2. Запустите код и прочитайте сообщение об ошибке. Это SyntaxError или IndentationError?
  3. Исправьте ошибку.
  4. Повторяйте шаги 2 и 3, пока не исправите все ошибки.

Решение

SyntaxError для отсутствия (): в конце первой строки, IndentationError для несоответствия между второй и третьей строками. Исправленная версия:

Выявление ошибок в именах переменных

  1. Прочитайте приведенный ниже код и (не запуская его) попытайтесь определить, в чем заключаются ошибки.
  2. Запустите код и прочитайте сообщение об ошибке. Как вы думаете, какой это тип NameError? Другими словами, это строка без кавычек, переменная с ошибкой или переменная, которая должна была быть определена, но не была определена?
  3. Исправьте ошибку.
  4. Повторяйте шаги 2 и 3, пока не исправите все ошибки.

Решение

3 ошибки NameError для номера с ошибкой, для сообщения, которое не определено, и для отсутствия в кавычках.

Исправленная версия:

Выявление ошибок индекса

  1. Прочитайте приведенный ниже код и (не запуская его) попытайтесь определить, в чем заключаются ошибки.
  2. Запустите код и прочитайте сообщение об ошибке. Что это за ошибка?
  3. Исправьте ошибку.

Решение

Ошибка индекса ; последняя запись — Seasons[3] , так что Seasons[4] не имеет смысла. Исправленная версия:

Запросы файлов Dropbox позволяют вам запрашивать файлы у кого угодно и собирать их прямо в вашем аккаунте Dropbox. С файловыми запросами:

  • Любой человек может отправить вам запрошенный вами файл независимо от того, есть ли у него аккаунт Dropbox или нет.
  • Все собранные вами файлы автоматически помещаются в выбранную вами папку Dropbox.
  • Люди, которые загружают файлы по вашему запросу, не могут получить доступ к вашему аккаунту Dropbox. Только вы можете просматривать файлы, загруженные другими, если вы не решите ими поделиться.

Примечание. Все файлы, собранные с помощью файлового запроса, будут занимать место в вашем аккаунте Dropbox. Чтобы убедиться, что вы можете принять запрашиваемые файлы, проверьте, сколько свободного места у вас есть. Если для файлов, которые вы хотите запросить, недостаточно места, получатели получат сообщение об ошибке при попытке загрузки. Пользователь Dropbox Basic, Plus или Family может загружать только файлы размером до 2 ГБ. Для файлов размером более 2 ГБ рассмотрите возможность использования общей ссылки. Профессиональные пользователи могут принимать файлы размером до 50 ГБ.

Разделы в этой статье:

Как создать запрос файла

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

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

Как изменить запрос файла

Чтобы изменить запрос файла после его создания:

    на dropbox.com.
  1. Нажмите «Запросы файлов» на левой боковой панели.
  2. Нажмите "…" (многоточие) справа от запроса.
  3. Нажмите "Изменить".
  4. Вы можете изменить как заголовок, так и описание вашего запроса. Пользователи Dropbox Professional и Business также могут добавлять или изменять крайний срок.
  5. Нажмите "Сохранить".

Как закрыть запрос файла

Вы можете закрыть запрос файла, если хотите прекратить получение файлов. После закрытия запроса на файл люди со ссылкой-приглашением не смогут загружать файлы в ваш Dropbox.

    на dropbox.com.
  1. Нажмите «Запросы файлов» на левой боковой панели.
  2. Нажмите "…" (многоточие) справа от запроса.
  3. Нажмите Закрыть запрос. Вы можете просмотреть свои закрытые запросы на вкладке Закрытые запросы.

Примечание. Вы можете повторно открыть закрытый запрос файла. На вкладке «Закрытые запросы» нажмите «…» (многоточие) справа от запроса и нажмите «Повторно открыть».

Читайте также: