Skip to content

Commit

Permalink
docs: add release
Browse files Browse the repository at this point in the history
  • Loading branch information
czy88840616 committed Sep 22, 2024
1 parent 7ce7537 commit 518b61f
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 7 deletions.
7 changes: 4 additions & 3 deletions site/blog/2024-08-29-release-3.17.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ tags: [release]

本次 3.17 版本,我们增加了一些新的特性,以及修复了一些问题,主要有:

* 1、使用 `busboy` 替换原有的上传组件
* 2、增加了一个新的服务端响应格式
* 3、class 中间件现在可以复用了
* 1、使用 替换原有的上传组件
* 2、`busboy` 上传的数据中的 `filedName`,在流式模式下不再提供
* 3、增加了一个新的服务端响应格式
* 4、class 中间件现在可以复用了

下面是更为细节的描述。

Expand Down
73 changes: 73 additions & 0 deletions site/blog/2024-09-22-release-3.18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
slug: release/3.18.0
title: Release 3.18.0
authors: [harry]
tags: [release]



---

升级请参考 [如何更新 Midway](/docs/how_to_update_midway) 中描述,请不要单独升级某个组件包。

本次 3.18 版本,主要修复了新的 busboy 组件的一些遗留问题,以及新增了一种上传模式。

下面是更为细节的描述。


## 异步迭代器上传模式

为了支持单次多个文件的流式上传,新版本使用了异步迭代器模型转换了上传流,这个新的模式用于替代原有的流式模式。

```typescript
// src/config/config.default.ts
export default {
// ...
busboy: {
mode: 'asyncIterator',
},
}
```

装饰器的入参也已经变成了异步迭代器。

```typescript
import { Controller, Post, Files, Fields } from '@midwayjs/core';
import { UploadStreamFileInfo, UploadStreamFieldInfo } from '@midwayjs/busboy';

@Controller('/')
export class HomeController {

@Post('/upload', /*...*/)
async upload(
@Files() fileIterator: AsyncGenerator<UploadStreamFileInfo>,
@Fields() fieldIterator: AsyncGenerator<UploadStreamFieldInfo>
) {
// ...
}
}
```

我们可以通过循环迭代器获取到每个上传的文件。

```typescript
for await (const file of fileIterator) {
const { filename, data } = file;
// ...
}
```

进而可以方便的做后续处理。

更多的内容,请参考 [细节文档](/docs/extensions/busboy)



## 此外还有更多的变化

* 流式上传时的 `fieldName` 字段现在恢复了
* httpClient 现在默认的配置不再会被单次请求覆盖
* 数据源的优先级 NPE 报错现在已经修复了
* 业务中的 https 配置现在在 dev 的输出提示中也变得正常了

以及一大批依赖进行了更新,可以参考我们的 [ChangeLog](https://midwayjs.org/changelog/v3.18.0)
4 changes: 3 additions & 1 deletion site/docs/extensions/busboy.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ export interface UploadFileInfo {

`v3.18.0` 提供,替代原有的 `stream` 模式,该模式支持多个文件流式上传。

配置 upload 的 mode 为 `asyncIterator` 字符串。
配置 mode 为 `asyncIterator` 字符串。

```typescript
// src/config/config.default.ts
Expand Down Expand Up @@ -710,6 +710,8 @@ export class HomeController {

## 内置错误

以下的错误在不同上传模式下均会自动触发。

* `MultipartInvalidFilenameError` 无效文件名
* `MultipartInvalidFileTypeError` 无效文件类型
* `MultipartFileSizeLimitError` 文件大小超出限制
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,7 @@ There are three upload modes: file mode, stream mode, and the newly added async

In the code, the `@Files()` decorator is used to obtain the uploaded files, and the `@Fields` decorator is used to get other upload form fields.


<Tabs>
<Tabs>
<TabItem value="file" label="File Mode">

`file` is the default value, with `mode` configured as the string `file`.
Expand Down Expand Up @@ -280,7 +279,7 @@ export interface UploadFileInfo {

Available since `v3.18.0`, this mode replaces the previous `stream` mode and supports streaming uploads of multiple files.

Configure the upload `mode` as the string `asyncIterator`.
Configure the `mode` as the string `asyncIterator`.

```typescript
// src/config/config.default.ts
Expand Down Expand Up @@ -700,6 +699,8 @@ Currently the configurations that can be passed include `mode` and `busboy`'s ow

## Built-in errors

The following errors will be automatically triggered in different modes.

* `MultipartInvalidFilenameError` Invalid file name
* `MultipartInvalidFileTypeError` Invalid file type
* `MultipartFileSizeLimitError` File size exceeds limit
Expand Down

0 comments on commit 518b61f

Please sign in to comment.