文件正在上传,但无法打开。文件为196 kb,在服务器上上传的文件为191 kb,文件已损坏(无法打开)。我已经尝试过使用dart http,但是却遇到了同样的错误。这是我在做什么;
void getFile() async {
FilePickerResult result = await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ['jpg', 'mp4', 'mov', 'png', 'jpeg'],
allowMultiple: false,
);
if (result != null) {
PlatformFile file = result.files.first;
var dio = new Dio();
dio.options.baseUrl = uri;
FormData formData = new FormData.fromMap({
"filename":
await MultipartFile.fromFile(file.path, filename: file.name),
// "data": MultipartFile.fromBytes(file.bytes, filename: file.name),
});
var response = await dio.post(
"/upload/${file.path.split('/').last}",
data: formData,
);
if (response.statusCode == 200) {
print(response);
// final player = json.decode(response.body);
// checkState(player);
} else {
throw Exception('Failed to upload a file');
}
} else {
// User canceled the picker
}
}
这也是在node.js服务器上的请求
service.post("/upload/:filename", function (req, res) {
console.log(req);
var filename = path.basename(req.params.filename);
filename = path.resolve("app/media", filename.replace(/\s/g, ""));
var dst = fs.createWriteStream(filename);
req.pipe(dst);
dst.on("drain", function () {
console.log("Yukleniyor... ", new Date());
req.resume();
});
req.on("end", function () {
console.log("Tamamlandi... " + filename);
res.end(JSON.stringify(MyPlayer));
});
});
编辑 这是网络cli上的有效示例
const selectedFile = document.getElementById("media").files[0];
$.ajax({
type: "POST",
url: target + "/upload/" + selectedFile.name,
data: selectedFile,
processData: false,
contentType: false,
}).done(function (data) {
document.getElementById("label").innerHTML = data;
});
答案 0 :(得分:0)
由于您尝试使用Http和Dio并遇到相同的错误,因此问题应该在服务器上而不是Flutter代码上。