たくさん検索した後、dartを介してアップロードしているときに単純なテキストファイルを逆シリアル化できません。
これは多くの反対票を引き起こす可能性があることを私は知っていますが、dartにファイルをアップロードする方法の簡単なデモが役立つでしょうか?
コンソールとdartのWebアプリの両方で。基本的な単語が含まれているテキストファイルをアップロードしたいだけです。
たくさん検索した後、dartを介してアップロードしているときに単純なテキストファイルを逆シリアル化できません。
これは多くの反対票を引き起こす可能性があることを私は知っていますが、dartにファイルをアップロードする方法の簡単なデモが役立つでしょうか?
コンソールとdartのWebアプリの両方で。基本的な単語が含まれているテキストファイルをアップロードしたいだけです。
次の簡単な例が私に役立ちます。
エディターで次のファイル構造を使用します。
fileuploadtest/
fileupload.dart
index.html
index.html(注:ここにはダートはありません!)
<!DOCTYPE html>
<html>
<head>
<title>index</title>
</head>
<body>
<form enctype="multipart/form-data" action="foo" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
fileupload.dart
これにより、(簡単にするために)常にすべてのリクエストに応答する静的ファイルハンドラーとindex.html
、GET
すべてのPOSTリクエストに応答し、アップロードされたファイルのコンテンツ(実際にはPOSTデータ全体)を出力するファイルアップロードハンドラーが作成されます。関連するビットを抽出する必要があります)。
import 'dart:io';
void main() {
var httpServer = new HttpServer();
// attach handlers:
var static = new StaticFileHandler();
httpServer.addRequestHandler(static.matcher, static.handler);
var fileUploadHandler = new FileUploadHandler();
httpServer.addRequestHandler(fileUploadHandler.matcher,
fileUploadHandler.handler);
// start listening
httpServer.listen("127.0.0.1", 8081);
}
class FileUploadHandler {
bool matcher(req) => req.method == "POST"; // return true if method is POST
void handler(req,res) {
req.inputStream.onData = () {
var data = req.inputStream.read();
var content = new String.fromCharCodes(data);
print(content); // print the file content.
};
}
}
class StaticFileHandler {
// return true for all GET requests.
bool matcher(req) {
print("Path: ${req.path}");
return req.method=="GET";
}
void handler(req,res) {
var file = new File("index.html"); // only serve index.html in the same folder
file.openInputStream().pipe(res.outputStream);
}
}
起動fileUpload.dart
し、ブラウザを使用してに移動しますhttp://localhost:8081/index.html
foo.txt
次のコンテンツを含む、というファイルの場合:
foo
bar
これは私が取得するログ出力全体です(Dart Editorのコンソールから投稿されました)
------WebKitFormBoundaryw7XBqLKuA7nP1sKc
Content-Disposition: form-data; name="MAX_FILE_SIZE"
100000
------WebKitFormBoundaryw7XBqLKuA7nP1sKc
Content-Disposition: form-data; name="uploadedfile"; filename="foo.txt"
Content-Type: text/plain
foo
bar
------WebKitFormBoundaryw7XBqLKuA7nP1sKc--