Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.ContentConsumer
Потребитель для файлов в HTTP-сообщениях
The FileConsumer
класс предоставляет удобный способ загрузить файл с веб-сервиса или сохранить в файле данные, полученные из Интернета. Вы можете задать имя файла или разрешить MATLAB® определите имя из информации, отправленной сервером или файлом с именем в URI.
The matlab.net.http.io.FileConsumer
класс является handle
класс.
consumer = FileConsumer(
создает filename
,permission
,machineformat
,encoding
)FileConsumer
который создает или перезаписывает файл с полезной нагрузкой ответа от сервера. Параметры имеют то же значение что и параметры fopen
функция, и все опционально.
consumer = FileConsumer(
устанавливает FID
)FileIdentifier
свойство к FID
и записывает в этот файл. FID
должен быть идентификатором файла, который вы открыли для записи. MATLAB записывает в файл в текущем индикаторе положения, поэтому если вы открываете существующий файл с помощью 'a+'
разрешение, например, MATLAB добавляет к файлу. Когда передача завершена, MATLAB оставляет индикатор положения в конце файла и не закрывает файл.
filename
- Имя файла или папкиИмя файла или папки, включая полный путь и необязательное расширение, задается в виде вектора символов или строкового скаляра. Чтобы определить имя файла, который создает MATLAB, смотрите Filename
свойство.
Если filename
задает файл в существующей папке, затем MATLAB:
Открывает файл используя fopen(filename,permission,...)
.
Если permission
не задан, затем открывает файл с помощью fopen(filename,'w+')
.
Если filename
не включает расширение, затем MATLAB добавляет его на основе поля заголовка Content-Type и/или Content-Disposition в полученном сообщении или расширения имени файла в URI запроса, если он есть.
Если filename
задает существующую папку с возможностью записи, затем MATLAB создает файл в папке с именем, полученным из поля заголовка Content-Disposition в ответе или из URI, возможно, добавляя расширение на основе Content-Type, если это имя не содержит его.
Если filename
отсутствует или пуст, MATLAB создает файл в текущей папке. Это эквивалентно filename
= '.'
. Текущая папка является папкой в то время, когда это FileConsumer
был создан, не то время, когда этот потребитель используется в send
запрос.
Пример: 'myTextFile.txt'
Типы данных: char
| string
permission
- Тип доступа к файлуw+
(по умолчанию) | u+
| u
| T
| значение разрешено fopen
функцияТип доступа к файлу, заданный как строка. Если permission
задан, он должен разрешать доступ на запись. Значение по умолчанию 'w+'
, который открывает или создает файл для чтения и записи и отбрасывает существующее содержимое, если оно имеется.
permission
может быть любым значением, разрешенным fopen
функция. Следующие дополнительные значения permission
поддерживаются:
| То же, что и Для примера, если |
| При добавлении к разрешению ведет себя аналогично текстовому режиму |
Во всех случаях для 'w'
и 'w+'
разрешения (или если permission
не задан), MATLAB не перезаписывает существующий файл, если имя файла точно не равно filename
.
Пример: 'a'
'w+T'
Типы данных: char
| string
machineformat
- Порядок чтения или записи байтов или битfopen
Порядок чтения или записи байтов или бит, заданный как любое значение, разрешенное fopen
функция.
Типы данных: char
| string
encoding
- Кодировка символовfopen
Кодировка символов, заданная как любое значение, разрешенное fopen
функция.
Типы данных: char
| string
FileIdentifier
- Идентификатор файлаИдентификатор записываемого файла (FID), заданный как double. Если потребитель был сконструирован с аргументом FID, то это свойство является идентификатором. Данные записываются в текущий индикатор положения файла, сопоставленный с этим идентификатором, поэтому подклассы должны быть осторожны, чтобы не менять позицию случайно при использовании этого идентификатора. По завершении передачи файл остается открытым, а позиция остается в конце файла.
Если конструктор вызывался со filename
аргумент или без аргументов, тогда это свойство является идентификатором файла только для чтения для этого файла. Это позволяет подклассам считать файл во время передачи, не нарушая индикатор положения, используемый для записи. По завершении передачи этот идентификатор закрывается.
GetAccess | public |
SetAccess | private |
Filename
- Имя пути к файлуstring.empty
(по умолчанию) | строкуПолное имя записываемого файла в виде строки. Если потребитель был сконструирован с аргументом FID, то это свойство является именем файла. В противном случае это значение может не быть установлено до тех пор, пока MATLAB не начнет запись в файл во время получения ответного сообщения, поскольку имя файла не может быть обязательно определено до тех пор, пока не будут получены все заголовки. Используйте это свойство для определения файла, который был записан. Filename
также хранится в Response.Body.Data
свойство.
GetAccess | public |
SetAccess | private |
AllocationLength
- Предлагаемый buffer sizeuint64
Предлагаемый buffer size, заданный как uint64
. MATLAB устанавливает AllocationLength
к ожидаемому размеру буферов данных, переданных в putData
. Фактический размер может быть меньше или больше. Чтобы улучшить эффективность, потребитель может использовать это значение для предварительного выделения пространства для обработки данных.
MATLAB устанавливает это свойство перед вызовом start
способ для удобства подклассов.
GetAccess | public |
SetAccess | public |
ContentLength
- Ожидаемая длина полезной нагрузкиuint64
| пустойОжидаемая длина полезной нагрузки, заданная как uint64
. Свойством обычно является Value
свойство matlab.net.http.field.ContentLengthField
в Header
свойство.
Если ContentLength
пуст, тогда длина не известна. Полезная нагрузка заканчивается, когда putData(uint8.empty)
вызывается.
MATLAB устанавливает это свойство перед вызовом initialize
для удобства подклассов, которым может быть полезно знать длину данных.
Если это ContentConsumer
является делегатом потребителя верхнего уровня, затем значение ContentLength
может отличаться от ContentLength
значение потребителя верхнего уровня.
Пример: numel(someData)
где someData
тип uint8
GetAccess | public |
SetAccess | public |
ContentType
- Тип носителя полезной нагрузкиmatlab.net.http.MediaType
| пустойТип мультимедиа полезной нагрузки, заданный как matlab.net.http.MediaType
объект. Свойством обычно является Value
свойство matlab.net.http.field.ContentTypeField
в Header
свойство. Если на ContentType
свойство пустое, тогда ContentTypeField
пуст или отсутствует.
MATLAB устанавливает это свойство перед вызовом initialize
для удобства подклассов, которые могут захотеть изучить MediaType
. Подклассы могут задать это свойство, если они определяют из данных, что это другое MediaType
.
В конце переноса MATLAB копирует это значение в Response.Body.ContentType
свойство.
Пример: 'application/octet-stream'
GetAccess | public |
SetAccess | public |
Header
- Заголовок обрабатываемой полезной нагрузкиmatlab.net.http.HeaderField
Заголовок обрабатываемой полезной нагрузки, заданный как matlab.net.http.HeaderField
объект.
Потребители используют этот заголовок, чтобы определить, как обработать полезную нагрузку, которая отправляется им. Для потребителя верхнего уровня это значение совпадает с Response.Header
. Для делегата значение может быть другим. Для примера в многочастном сообщении, обработанном MultipartConsumer
, это заголовок части, которую обрабатывает этот делегат. Делегат все еще может изучить Response.Header
для заголовков исходного сообщения.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
Request
- Завершено RequestMessage
который был отправленmatlab.net.http.RequestMessage
Завершенное RequestMessage
который был отправлен, заданный как matlab.net.http.RequestMessage
объект. Это окончательная RequestMessage
после всех перенаправлений, который является completedrequest
возвращаемое значение из send
способ.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
Response
— ResponseMessage
обрабатываетсяmatlab.net.http.ResponseMessage
The ResponseMessage
обрабатывается, задается как matlab.net.http.ResponseMessage
объект.
MATLAB устанавливает Response
свойство перед вызовом initialize
. Значение является ResponseMessage
после получения заголовков, но до получения полезной нагрузки. В начале обработки ответного сообщения (или в начале компонента для многопоточных сообщений) ResponseMesssage.Body
свойство является MessageBody
объект с пустыми Data
и Payload
свойства. Чтобы хранить полученные данные, потребители могут редактировать Response
и MessageBody.Data
свойства во время передачи данных. Обычно потребители, которые обрабатывают и затем хранят данные Response.Body.Data
к их обработанной полезной нагрузке, хотя это не требуется. По завершении передачи MATLAB возвращает это Response
к вызывающему абоненту send
. Потребители не должны изменять другие Response
свойства, такие как Header
или StatusLine
, поскольку эти изменения возвращаются вызывающему абоненту send
.
The Response.Body.Payload
свойство пусто во время передачи, и потребители не должны пытаться изменить его. Если на HTTPOptions.SavePayload
задается свойство, затем устанавливается MATLAB Payload
к полученной полезной нагрузке в конце передачи сообщения или части (после вызова на putData(uint8.empty)
) или когда происходит исключение.
Если во время обработки сообщений у потребителя возникает исключение, MATLAB выдает HTTPException
объект. The History
свойство содержит это Response
значение.
Если потребитель является делегатом, который обрабатывает часть многочастного сообщения, то Response.Header
содержит заголовок всего сообщения и Payload
и Data
свойства Response.Body
удаляются перед вызовом ContentConsumer
для каждой части. По завершении каждой части, новый ResponseMessage
добавляется в конец массива ResponseMessage
объекты в Body.Data
исходного отклика содержащий
Header
от этого объекта и Body
от этого свойства. Следующий делегат видит свежую Response
с пустым MessageBody
, не предыдущий делегат MessageBody
.
GetAccess | public |
SetAccess | public |
Dependent | true |
URI
- Пункт назначения обрабатываемого запросаmatlab.net.URI
Адрес назначения обрабатываемого запроса, заданный как matlab.net.URI
объект. Это значение является исходным URI назначения, определяемым send
. Это не URI прокси или конечный URI после перенаправлений.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
AppendFcn
- Функция вызывается putData
для добавления дополнительных данныхФункция, заданная как указатель на функцию, вызывается putData
метод для добавления дополнительных данных. The putData
метод в этом классе вызывает AppendFcn
функция для добавления данных, которые она получает в своей data
аргумент существующим данным в ответном сообщении. Функция должна иметь подпись:
AppendFcn(consumer,newdata)
где newdata
- данные, которые будут добавлены в массив в consumer.Response.Body.Data
. В обязанности этого метода входит обновление consumer.CurrentLength
для отражения новой длины Data
. Если newdata
пуст, что указывает на конец потока, тогда функция должна обновляться Response.Body.Data
до его конечного значения.
Поведение по умолчанию, если это свойство пусто, использует внутреннюю функцию, которая обрабатывает Data
как массив произвольных значений, поддерживающих horzcat
функция. Он эффективно добавляет newdata
путем предварительного выделения пространства, поддержания CurrentLength
является фактической длиной хранимых данных. В конце сообщения он обрезает Response.Body.Data
на CurrentLength
.
Подклассы могут изменить это свойство, если horzcat
не подходит для процесса добавления. Для примера, когда StringConsumer
создает скалярную строку, она добавляет к строке с помощью plus
функция вместо horzcat
.
Подклассы, которые не вызывают ContentConsumer.putData
для добавления данных, или которые удовлетворены horzcat
поведение при добавлении данных может игнорировать это свойство.
Пример: @customAppend
где @customAppend
определяется потребителем
GetAccess | protected |
SetAccess | protected |
CurrentDelegate
— ContentConsumer
которому этот потребитель делегируетmatlab.net.http.io.ContentConsumer
| []
The ContentConsumer
которому делегирует этот потребитель, задается как matlab.net.http.io.ContentConsumer
объект. The delegateTo
метод вызывающего потребителя (делегатор) устанавливает CurrentDelegate
свойство. Если текущего делегирования нет, то значение []
.
MATLAB устанавливает CurrentDelegate
на []
перед вызовом initialize
.
GetAccess | protected |
SetAccess | protected |
CurrentLength
- Объем данных, имеющихся в настоящее время в Response.Body.Data
uint64.empty
(по умолчанию) | uint64
Длина данных в данный момент в Response.Body.Data
свойство, заданное как uint64
.
Это свойство используется при Response.Body.Data
предварительно выделен размер, больший фактического объема хранимых в настоящее время данных, для указания длины этих хранимых данных. Если это свойство пусто, это означает, что все Response.Body.Data
содержит сохраненные данные или ContentConsumer
подкласс утилизирует данные каким-либо образом, кроме хранения их в Response.Body.Data
.
Это свойство используется и устанавливается putData
метод в этом базовом классе, когда AppendFcn
свойство пустое. Именно в интересах подклассов вызываются putData
и хотите изучить уже сохраненные данные и/или любые реализации AppendFcn
которые поддерживают результаты в Response.Body.Data
.
Подклассы, которые используют putData
также может изменить это свойство, чтобы сбросить положение в буфере, где хранятся данные. Для примера, когда значение по умолчанию AppendFcn
используется функция, подкласс, который обрабатывает все Response.Body.Data
при каждом вызове putData
возможно, больше не используется для исходных данных, поэтому он может сбросить CurrentLength
свойство, равное 1, так что следующая putData
вызов перезаписывает буфер новыми данными. Нет необходимости очищать элементы в буфере после окончания новых данных.
Подклассы, которые не вызывают putData
может использовать это свойство для отслеживания собственных данных или может оставить его незаполненным (пустым). MATLAB не накладывает никаких ограничений на значение, которое может быть установлено здесь, и не использует его ни в каких целях, кроме как определить, где значение по умолчанию AppendFcn
следует хранить следующий буфер данных и где обрезать данные в конце сообщения. Перед окончательным вызовом установите это свойство в пустое значение putData(uint8.empty)
для предотвращения усечения данных.
MATLAB устанавливает это свойство пустым перед каждым вызовом initialize
.
GetAccess | protected |
SetAccess | protected |
MyDelegator
— ContentConsumer
который делегировал этому потребителюmatlab.net.http.io.ContentConsumer
| пустойThe ContentConsumer
делегированный этому потребителю, указанный как matlab.net.http.io.ContentConsumer
объект. Если этот потребитель является делегатом, который был вызван другим потребителем, таким как GenericConsumer
или MultipartConsumer
, тогда это вызывающий потребитель. Он пуст для потребителя верхнего уровня, указанного в вызове send
.
Делегаты могут использовать это свойство для доступа к свойствам своих делегатов, например, чтобы определить, какой потребитель делегировал им.
GetAccess | protected |
SetAccess | protected |
initialize | Подготовьте потребителя к новой полезной нагрузке HTTP |
start | Начните передачу файла в FileConsumer |
putData | Сохраните следующий буфер данных в файл для FileConsumer |
delegateTo | Делегат другому потребителю |
ContentConsumer
| ContentTypeField
| FileProvider
| fopen
| RequestMessage
| ResponseMessage
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.