以下の質問からコードを取得しました。
クライアントコード
void main(){
InputElement uploadInput = query('#uploadFile');
uploadInput.on.change.add((e) {
// read file content as dataURL
final files = uploadInput.files;
if (files.length == 1) {
final file = files[0];
final reader = new FileReader();
reader.on.load.add((e) {
sendFile(reader.result);
});
reader.readAsText(file);
}
});
}
sendFile(dynamic data) {
final req = new HttpRequest();
req.on.readyStateChange.add((Event e) {
if (req.readyState == HttpRequest.DONE &&
(req.status == 200 || req.status == 0)) {
window.alert("test successful");
}
});
req.open("POST", "http://127.0.0.1:8080/upload");
req.send(data);
print(req.response);
}
以下に示すように、わずかな変更を加えたサーバーコード:
void UploadFile(HttpRequest request, HttpResponse response) {
//some logic
_readBody(request, (body) {
var logFile = new File('test.txt');
var out = logFile.openOutputStream(FileMode.WRITE);
out.writeString(body);
out.close();
response.statusCode = HttpStatus.CREATED;
response.contentLength = 0;
response.outputStream.close();
});
}
_readBody(HttpRequest request, void handleContent(String body)) {
String contentString = ""; // request body byte data
final completer = new Completer();
final textFile = new StringInputStream(request.inputStream);
textFile.onData = (){
print("inside data");
contentString = contentString.concat(textFile.read());
};
textFile.onClosed = () {
completer.complete("");
};
textFile.onError = (Exception e) {
print('exeption occured : ${e.toString()}');
};
// process the request and send a response
completer.future.then((_){
handleContent(contentString);
});
}
ダーツ エディターのウィンドウでコンソール アプリをデバッグできないため、エラーの内容がわかりません。しかし、私のテストファイルには、アップロードされたファイルから送信したテキストが含まれていないため、エラーが何であるかを理解できません。