首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Deno/Oak中的HTTP响应中使用FormData

在Deno/Oak中的HTTP响应中使用FormData
EN

Stack Overflow用户
提问于 2021-09-02 14:41:06
回答 1查看 569关注 0票数 0

我知道我可以在客户机中创建一个FormData,并将它发送到服务器(在本例中,我使用Deno/Oak),然后从那里读取它。

但反之亦然吗?

如果我在Oak中有一条路由,并且我希望它发送一个多部分的响应(包含一个或多个blobs,以及一个或多个字符串),那么我该如何做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 12:11:06

Oak的自动响应体处理支持FormData,因此您可以将context.response.body设置为FormData的实例,Oak将负责其余的操作。例如:

代码语言:javascript
复制
import { Application } from "https://deno.land/x/oak@v9.0.0/mod.ts";

const app = new Application();

app.use((ctx) => {
  const data = new FormData();
  data.append("string1", "Hi");
  data.append("string2", "Bye");
  data.append("blob1", new Blob(['<a id="a">Hi</a>'], { type: "text/xml" }));
  data.append("blob2", new Blob(['<b id="b">Bye</b>'], { type: "text/xml" }));
  ctx.response.body = data;
});

await app.listen({ port: 8000 });
代码语言:javascript
复制
% curl localhost:8000
------7115155097707325061106360125
Content-Disposition: form-data; name="string1"

Hi
------7115155097707325061106360125
Content-Disposition: form-data; name="string2"

Bye
------7115155097707325061106360125
Content-Disposition: form-data; name="blob1"; filename="blob"
Content-Type: text/xml

<a id="a">Hi</a>
------7115155097707325061106360125
Content-Disposition: form-data; name="blob2"; filename="blob"
Content-Type: text/xml

<b id="b">Bye</b>
------7115155097707325061106360125--

在Deno中也可以直接这样做,不需要任何额外的框架:

代码语言:javascript
复制
const server = Deno.listen({ port: 8000 });

for await (const conn of server) serveHttp(conn);

async function serveHttp(conn: Deno.Conn) {
  const httpConn = Deno.serveHttp(conn);
  for await (const requestEvent of httpConn) {
    const data = new FormData();
    data.append("string1", "Hi");
    data.append("string2", "Bye");
    data.append("blob1", new Blob(['<a id="a">Hi</a>'], { type: "text/xml" }));
    data.append("blob2", new Blob(['<b id="b">Bye</b>'], { type: "text/xml" }));
    requestEvent.respondWith(new Response(data));
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69032445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档