Flutter 桌面文件选择器结果文件。字节返回 null 错误?
Posted
技术标签:
【中文标题】Flutter 桌面文件选择器结果文件。字节返回 null 错误?【英文标题】:Flutter Desktop File Picker Result files. Bytes return null Error? 【发布时间】:2021-11-05 05:12:22 【问题描述】:我正在构建 Flutter 桌面/Web 应用程序。我使用 Flutter file_picker 4.02 发布它 转换桌面应用程序后在 Flutter Web 上完美工作它在文件选择返回时出错
file.byte 返回值为空
文件选择器结果? result = await FilePicker.platform.pickFiles();
if (result != null)
PlatformFile file = result.files.first;
print(file.name);
**print(file.bytes);**
print(file.size);
print(file.extension);
print(file.path);
else
// User canceled the picker
我需要将选定的结果作为字节获取?
Flutter 频道:Dev 文件选择器:^4.0.2
【问题讨论】:
您似乎已经向他们提出了问题。这很好,但您实际上并没有填写他们的模板。也许最好返回并正确填写他们的错误报告模板。 【参考方案1】:我只选择一个文件从 chrome 上传。我使用 Stream.fromIterable 将字节映射到数组中。我用文件名、文件大小和字节数组创建了一个 MultipartFile。接下来,我使用 dio 将 FormData 发布到 webapi。 [FromForm] 用于从 dio 发布的 formData 中提取数据。 IFormData 绑定到多部分表单数据。
FilePickerResult result = await FilePicker.platform.pickFiles(type: FileType.any, allowMultiple: false);
var fileName = result.files.first.name;
var fileSize = fileBytes.length;
FormData formData=FormData.fromMap(
'id':id,
'name':submitter,
'file': MultipartFile(
Stream.fromIterable(fileBytes.map((e) => [e])),
fileSize,
filename: fileName,
)) ;
var url = Uri.parse(_BASE_URL + 'api/review/upload');
Dio dio=new Dio();
try
String token = this.dataCache?.login?.jwtToken??"";
Options options=new Options(
contentType: Headers.formUrlEncodedContentType,
headers:
Headers.contentLengthHeader: formFile.length,
);
options.headers["Authorization"] = "Bearer " + token;
dio.post(url.toString(),data:formFile, options:options);
Webapi
public class FlutterFormData
public int Id get; set;
public string Name get; set;
public IFormFile file get; set;
public async Task<IActionResult> UploadDocument([FromForm] FlutterFormData
formData, string name)
String retVal = "unprocessed";
if (formData.file != null)
if (formData.file.Length > 0)
var filePath = Path.GetTempFileName();
using (var stream = System.IO.File.Create(filePath))
await formData.file.CopyToAsync(stream);
retVal = "Processed";
return Ok(retVal);
【讨论】:
以上是关于Flutter 桌面文件选择器结果文件。字节返回 null 错误?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Web:文件选择器抛出“无效参数(路径):不能为空”错误
Flutter 工作管理器返回“工作人员结果失败 [id=XXXXxXXXXXXXXXX 标签= be.tramckrijte.workmanager.BackgroundWorker ]”