teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

ほげ

2020/11/17 01:51

投稿

_ecs
_ecs

スコア9

title CHANGED
File without changes
body CHANGED
@@ -22,9 +22,64 @@
22
22
  )
23
23
  )
24
24
  ```
25
- 追記
25
+ 追記:全体のコード
26
26
  ```javascript
27
+ // cookie取得
28
+ const get_cookie = name => {
29
+ let cookieValue = null;
30
+ if (document.cookie && document.cookie !== '') {
31
+ const cookies = document.cookie.split(';');
32
+ for (var i = 0; i < cookies.length; i++) {
33
+ let cookie = jQuery.trim(cookies[i]);
34
+ if (cookie.substring(0, name.length+1) === (name+'=')) {
35
+ cookieValue = decodeURIComponent(cookie.substring(name.length+1));
36
+ break;
37
+ }
38
+ }
39
+ }
40
+ return cookieValue;
41
+ }
42
+
43
+ class Transmission {
44
+ constructor(method, content, func) {
45
+ this.method = method;
46
+ this.content = content;
47
+ this.func = func;
48
+ this.__proto__.csrftoken = get_cookie('csrftoken');
49
+ }
50
+
51
+ send(url) {
52
+ fetch(url, {
53
+ method: this.method,
54
+ credentials: "same-origin",
55
+ headers: {
56
+ "Accept": "application/json",
57
+ "Content-Type": "application/json",
58
+ "X-CSRFToken": this.csrftoken,
59
+ },
60
+ body: JSON.stringify(this.content)
61
+ })
62
+ .then(response => {
63
+ if(response.ok) {
64
+ return response.json();
65
+ } else {
66
+ throw new Error("not found...");
67
+ }
68
+ })
69
+ .then(data => {
70
+ // thisの束縛
71
+ this.func(data);
72
+ })
73
+ .catch(e => {
74
+ console.log(e.message);
75
+ });
76
+ }
77
+ }
78
+ Transmission.uid = get_cookie('uid');
79
+
80
+
81
+ {
27
- let file_name = file_content = null;
82
+ let file_name = file_content = null;
28
83
  // ファイル中身を展開しbase64エンコード
29
84
  document.querySelector('.custom-file-input').addEventListener('change',function(e){
30
85
  const file = document.getElementById("input_file").files[0];
@@ -39,6 +94,55 @@
39
94
  reader.readAsText(file, "utf-8");
40
95
  }
41
96
  });
97
+
98
+ // document.getElementById("send").addEventListener("click", e => {
99
+ // const cmd = document.getElementById("cmd");
100
+ // if(cmd.value != "") {
101
+ // let content = {
102
+ // sender: Transmission.uid,
103
+ // cmd: cmd.value,
104
+ // recipient: "00-FF-CE-89-86-5B"
105
+ // }
106
+ // if(file_name != null && file_content != null) {
107
+ // content["name"] = file_name;
108
+ // content["content"] = file_content;
109
+ // }
110
+
111
+ // tran = new Transmission(
112
+ // "POST",
113
+ // content,
114
+ // (data) => {
115
+ // console.log(data);
116
+ // }
117
+ // );
118
+ // tran.send("http://127.0.0.1:8000/api/command/?format=json");
119
+ // }
120
+ // });
121
+ document.getElementById("send").addEventListener("click", e => {
122
+ const cmd = document.getElementById("cmd");
123
+ if(cmd.value != "") {
124
+ let content = {
125
+ response: "hogheoh",
126
+ }
127
+ if(file_name != null && file_content != null) {
128
+ content["name"] = file_name;
129
+ content["content"] = file_content;
130
+ }
131
+
132
+ tran = new Transmission(
133
+ "PATCH",
134
+ content,
135
+ (data) => {
136
+ console.log(data);
137
+ }
138
+ );
139
+ tran.send("http://127.0.0.1:8000/api/command/2/?format=json");
140
+ }
141
+ });
142
+ console.log(document.getElementById("target").value);
143
+ }
144
+
145
+
42
146
  ```
43
147
 
44
148
  ### 補足情報(FW/ツールのバージョンなど)

3

ほげ

2020/11/17 01:51

投稿

_ecs
_ecs

スコア9

title CHANGED
File without changes
body CHANGED
@@ -22,6 +22,24 @@
22
22
  )
23
23
  )
24
24
  ```
25
+ 追記
26
+ ```javascript
27
+ let file_name = file_content = null;
28
+ // ファイル中身を展開しbase64エンコード
29
+ document.querySelector('.custom-file-input').addEventListener('change',function(e){
30
+ const file = document.getElementById("input_file").files[0];
31
+ const next_sibling = e.target.nextElementSibling;
32
+ file_name = file.name;
33
+ next_sibling.innerText = file_name;
34
+ if (1 <= document.getElementById("input_file").files.length) {
35
+ let reader = new FileReader();
36
+ reader.onload = the_file => {
37
+ file_content = btoa(encodeURIComponent(the_file.target.result));
38
+ }
39
+ reader.readAsText(file, "utf-8");
40
+ }
41
+ });
42
+ ```
25
43
 
26
44
  ### 補足情報(FW/ツールのバージョンなど)
27
45
 

2

ほげ

2020/11/17 01:30

投稿

_ecs
_ecs

スコア9

title CHANGED
File without changes
body CHANGED
@@ -25,4 +25,5 @@
25
25
 
26
26
  ### 補足情報(FW/ツールのバージョンなど)
27
27
 
28
- python3
28
+ python3
29
+ django rest framework

1

ほげ

2020/11/17 01:04

投稿

_ecs
_ecs

スコア9

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  f.write(
18
18
  urllib.parse.unquote(
19
19
  base64.b64decode(
20
- validated_data['content']
20
+ validated_data['content'] #jsでエンコードされた文字列
21
21
  ).decode()
22
22
  )
23
23
  )