0

我采用了以下问题的代码形式:

如何在 Dart 中上传文件?

客户代码

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);
    });
   }

我不知道错误是什么,因为我无法在 dart 编辑器的窗口中调试控制台应用程序。但我无法理解错误是什么,因为我的测试文件不包含我从上传文件发送的文本。

4

0 回答 0