flutter - 上传图片/文件到 Strapi (Flutter Web)

标签 flutter form-data strapi dio flutter-http

我正在尝试通过 Flutter Web 将图像上传到 Strapi。我知道(从这个 link )我需要使用 FormData 来做到这一点。我研究了很多方法来做到这一点,我偶然发现了 Dio当然还有 Http .
两种解决方案都给了我错误:Unsupported operation: MultipartFile is only supported where dart:io is available.我试过这个代码:

var request = new http.MultipartRequest("POST", Uri.parse(url));
    request.files.add(
      await http.MultipartFile.fromPath(
        "files",
        imageFilePath,
      ),
    );
    request.send().then((response) {
      if (response.statusCode == 200) print("Uploaded!");
      print(response.statusCode);
    }).catchError((e) => print(e));
按照建议 here .
以及许多其他获取错误或空数据 (400),当我使用 MultipartFile.fromBytes(...) 时.
我只是想上传一个文件,因此我认为我的 body 应该只包含带有 files 的 FormData正如 Strapi's Documentation 上提到的.

最佳答案

所以,我在 Flutter Discord 上搜索了一些帮助,我发现我的问题发生是因为 Flutter Web 无法使用 'dart:io' ,并使用 'dart:html'取消了所有 Flutter 平台的使用。
我最终使用了这个进口:

import 'dart:convert';
import 'dart:typed_data';
import 'package:image_picker/image_picker.dart';
import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';
import 'package:path/path.dart';
import 'package:async/async.dart';
这是我创建和工作的功能:
 Future<bool> uploadImage(
    String imageFilePath,
    Uint8List imageBytes,
  ) async {
    String url = SERVERURL + "/uploadRoute";
    PickedFile imageFile = PickedFile(imageFilePath);
    var stream =
        new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));

    var uri = Uri.parse(url);
    int length = imageBytes.length;
    var request = new http.MultipartRequest("POST", uri);
    var multipartFile = new http.MultipartFile('files', stream, length,
        filename: basename(imageFile.path),
        contentType: MediaType('image', 'png'));

    request.files.add(multipartFile);
    var response = await request.send();
    print(response.statusCode);
    response.stream.transform(utf8.decoder).listen((value) {
      print(value); 
    });
我在使用 Strapi 时遇到了这个问题这个解决方案就像一个魅力。

关于flutter - 上传图片/文件到 Strapi (Flutter Web),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314063/

相关文章:

Flutter - 在容器中显示相机/BarcodeScanner

javascript - 在 ASP.NET 表单中提交更改的 FormData,以便通过 ModelState 和重定向实现正常行为

javascript - 带有用于电子邮件的自定义 Sendgrid Controller 代码的 Strapi Beta

javascript - 无法从 Strapi 中的 "SINGLE-TYPE"内容类型获取 json 数据

flutter - 如何在单击文本字段时强制屏幕向下滚动?

ios - 如何解决flutter中的iOS部署目标问题

javascript - 后台Formdata为空

javascript - 如何在 Strapi 中发布关系

Flutter:RichText 不适用于主题

jquery - 使用 jQuery.ajax 发送 multipart/formdata