gpt4 book ai didi

Dart如何上传图片

转载 作者:行者123 更新时间:2023-12-02 00:05:51 25 4
gpt4 key购买 nike

我正在尝试上传图片,这是代码:

server.dart

import 'dart:io';

void main() {
HttpServer.bind('127.0.0.1', 8080)
.then((HttpServer server) {
server.listen((HttpRequest request) {
if (request.method.toLowerCase() == 'post') {
request.fold(new BytesBuilder(), (builder, data) => builder..add(data))
.then((BytesBuilder builder) {
File file = new File('abc.jpg');
file.writeAsBytes(builder.takeBytes(), mode: FileMode.WRITE)
.then((_) {
request.response.close();
});
});
} else {
File f = new File('test_1.html')
..openRead().pipe(request.response);
}
});
});
}

test_1.html

<!DOCTYPE html>

<html>
<head>
<title>test_1</title>
</head>

<body>
<form method="post" enctype="multipart/form-data">
<input id="fileupload" name="myfile" type="file" placeholder="some file here..."/>
<input type="submit" />
</form>
</body>
</html>

然后我尝试使用 win photo viewer 打开新保存的图像,但它说“不支持此文件格式”,而我可以看到原始图像的内容。所以我猜我没有使用正确的方法来解码字节(也许,只是一个猜测)。

你们能给我一个提示吗?

抱歉英语不好。

最佳答案

在服务器端,您正在保存包含多部分 信息的 HTTP 请求正文。尝试使用文本编辑器打开您保存的文件,您会看到如下内容:

------WebKitFormBoundaryOTIF23kDCYaWAAlc
Content-Disposition: form-data; name="myfile"; filename="photo.jpeg"
Content-Type: image/jpeg

<FF><D8><FF><E0>^@^PJFIF^@^A^A^@^@^A^@^A^......
------WebKitFormBoundaryOTIF23kDCYaWAAlc--

您需要解析请求正文以检索上传文件的真实内容。你可以用 http_server package 做到这一点像这样:

import 'dart:io';
import 'package:http_server/http_server.dart';

void main() {
HttpServer.bind('127.0.0.1', 8080)
.then((HttpServer server) {
server.listen((HttpRequest request) {
if (request.method.toLowerCase() == 'post') {
HttpBodyHandler.processRequest(request).then((body) {
HttpBodyFileUpload fileUploaded = body.body['myfile'];
final file = new File('abc.jpg');
file.writeAsBytes(fileUploaded.content, mode: FileMode.WRITE)
.then((_) {
request.response.close();
});
});
} else {
File f = new File('upload.html')
..openRead().pipe(request.response);
}
});
});
}

关于Dart如何上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18435920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com