回答編集履歴

3

コードの一部の変更

2016/02/13 14:32

投稿

K_S_
K_S_

スコア419

test CHANGED
@@ -10,92 +10,202 @@
10
10
 
11
11
 
12
12
 
13
+ クライアント側からファイルをPOSTデータとして送信する方法は以下のページを参考にしました。
14
+
15
+ [PHP: ファイルをアップロードする](http://blog.sarabande.jp/post/80779555411)
16
+
17
+
18
+
19
+ もし上手くいきましたらご一報ください、よろしくお願いします。
20
+
21
+
22
+
23
+ ```php
24
+
25
+ クライアント側からのファイルのアップロード1(cURLを利用する方法)
26
+
27
+
28
+
29
+ // http://blog.sarabande.jp/post/80779555411より抜粋
30
+
31
+
32
+
33
+ $opts = [
34
+
35
+ CURLOPT_RETURNTRANSFER => true,
36
+
37
+ CURLOPT_URL => 'http://localhost:3000/upload.php',
38
+
39
+ CURLOPT_POST => true,
40
+
41
+ CURLOPT_POSTFIELDS => ['userfile' => curl_file_create('test.txt','text/plain','uploaded.txt')],
42
+
43
+ CURLOPT_USERAGENT => 'User-Agent: Mozilla/5.0',
44
+
45
+ CURLOPT_COOKIE => 'foo=bar',
46
+
47
+ CURLOPT_HTTPHEADER => ['Accept-language: ja']
48
+
49
+ ];
50
+
51
+
52
+
53
+ $ch = curl_init();
54
+
55
+ curl_setopt_array($ch, $opts);
56
+
57
+ $ret = curl_exec($ch);
58
+
59
+ curl_close($ch);
60
+
61
+
62
+
63
+ var_dump(
64
+
65
+ 'success' === json_decode($ret, true)['msg']
66
+
67
+ );
68
+
69
+ ```
70
+
71
+
72
+
73
+ ```php
74
+
75
+
76
+
77
+ クライアント側からのファイルのアップロード2(file_get_contentsを利用する方法)
78
+
79
+
80
+
81
+ // http://blog.sarabande.jp/post/80779555411より抜粋
82
+
83
+
84
+
85
+ $boundary = '--------------------------'.microtime(true);
86
+
87
+ $url = 'http://localhost:3000/upload.php';
88
+
89
+ $filename = 'test.txt';
90
+
91
+
92
+
93
+ $headers = [
94
+
95
+ 'Accept-language: ja',
96
+
97
+ 'Cookie: hash=12345abcde',
98
+
99
+ 'Content-Type: multipart/form-data; boundary='.$boundary
100
+
101
+ ];
102
+
103
+
104
+
105
+ $content = '--'.$boundary."\r\n".
106
+
107
+ 'Content-Disposition: form-data; name="userfile"; filename="'.basename($filename).'"'."\r\n".
108
+
109
+ 'Content-Type: text/plain'."\r\n\r\n".
110
+
111
+ file_get_contents($filename)."\r\n".
112
+
113
+ '--'.$boundary.'--'."\r\n";
114
+
115
+
116
+
117
+ $opts['http'] = [
118
+
119
+ 'method' => 'POST',
120
+
121
+ 'header' => implode("\r\n", $headers),
122
+
123
+ 'content' => $content,
124
+
125
+ 'user-agent' => 'Mozilla/5.0'
126
+
127
+ ];
128
+
129
+
130
+
131
+ $context = stream_context_create($opts);
132
+
133
+ $ret = file_get_contents($url, false, $context);
134
+
135
+ var_dump('success' === json_decode($ret, true)['msg']);
136
+
137
+ ```
138
+
139
+
140
+
141
+ ```PHP
142
+
143
+ サーバー側のファイル受信時の処理(upload.php)
144
+
145
+
146
+
147
+ <?php
148
+
149
+
150
+
151
+ if (is_uploaded_file($_FILES["uplift"]["tmp_name"])) {
152
+
153
+ if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "folder/" . $_FILES["upfile"]["name"])) {
154
+
155
+ chmod("folder/" . $_FILES["upfile"]["name"], 0644);
156
+
157
+ echo $_FILES["upfile"]["name"] . "をアップロードしました。";
158
+
159
+ } else {
160
+
161
+ echo "ファイルをアップロードできません。";
162
+
163
+ }
164
+
165
+ } else {
166
+
167
+ echo "ファイルが選択されていません。";
168
+
169
+ }
170
+
171
+
172
+
173
+ ?>
174
+
175
+ ```
176
+
177
+
178
+
179
+ ```php
180
+
181
+ クライアント側のファイルのダウンロード(download.php)
182
+
183
+
184
+
185
+ <?php
186
+
187
+
188
+
189
+ $url = "http://XXX.XXX.XXX.XXX/folder/file.txt";
190
+
191
+ $data = file_get_contents($url);
192
+
193
+ file_put_contents('C:work\file.txt', $data);
194
+
195
+
196
+
197
+ echo "ファイルをダウンロードしました。"
198
+
199
+
200
+
201
+ ?>
202
+
203
+ ```
204
+
205
+
206
+
13
207
  ```html
14
208
 
15
- クライアント側からのファイルのアップロード
16
-
17
-
18
-
19
- <form action="http://XXX.XXX.XXX.XXX/upload.php" method="post" enctype="multipart/form-data">
20
-
21
- <input type="file" name="upfile" size="30" style="display:none" value="C:work\file.txt" /><br />
22
-
23
- <input type="submit" value="アップロード" />
24
-
25
- </form>
26
-
27
- ```
28
-
29
-
30
-
31
- ```PHP
32
-
33
- サーバー側のファイル受信時の処理(upload.php)
34
-
35
-
36
-
37
- <?php
38
-
39
-
40
-
41
- if (is_uploaded_file($_FILES["uplift"]["tmp_name"])) {
42
-
43
- if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "folder/" . $_FILES["upfile"]["name"])) {
44
-
45
- chmod("folder/" . $_FILES["upfile"]["name"], 0644);
46
-
47
- echo $_FILES["upfile"]["name"] . "をアップロードしました。";
48
-
49
- } else {
50
-
51
- echo "ファイルをアップロードできません。";
52
-
53
- }
54
-
55
- } else {
56
-
57
- echo "ファイルが選択されていません。";
58
-
59
- }
60
-
61
-
62
-
63
- ?>
64
-
65
- ```
66
-
67
-
68
-
69
- ```php
70
-
71
- クライアント側のファイルのダウンロード(download.php)
72
-
73
-
74
-
75
- <?php
76
-
77
-
78
-
79
- $url = "http://XXX.XXX.XXX.XXX/folder/file.txt";
80
-
81
- $data = file_get_contents($url);
82
-
83
- file_put_contents('C:work\file.txt', $data);
84
-
85
-
86
-
87
- echo "ファイルをダウンロードしました。"
88
-
89
-
90
-
91
- ?>
92
-
93
- ```
94
-
95
-
96
-
97
- ```html
98
-
99
209
  クライアント側のファイルのダウンロード(client.html)
100
210
 
101
211
 

2

回答ほ

2016/02/13 14:32

投稿

K_S_
K_S_

スコア419

test CHANGED
@@ -36,6 +36,8 @@
36
36
 
37
37
  <?php
38
38
 
39
+
40
+
39
41
  if (is_uploaded_file($_FILES["uplift"]["tmp_name"])) {
40
42
 
41
43
  if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "folder/" . $_FILES["upfile"]["name"])) {
@@ -56,15 +58,17 @@
56
58
 
57
59
  }
58
60
 
61
+
62
+
59
63
  ?>
60
64
 
61
65
  ```
62
66
 
63
67
 
64
68
 
65
- ```html
69
+ ```php
66
70
 
67
- クライアント側のファイルのダウンロード(file.txtがアップロードされた後)
71
+ クライアント側のファイルのダウンロード(download.php)
68
72
 
69
73
 
70
74
 
@@ -80,6 +84,24 @@
80
84
 
81
85
 
82
86
 
87
+ echo "ファイルをダウンロードしました。"
88
+
89
+
90
+
83
91
  ?>
84
92
 
85
93
  ```
94
+
95
+
96
+
97
+ ```html
98
+
99
+ クライアント側のファイルのダウンロード(client.html)
100
+
101
+
102
+
103
+ <a href="download.php">ダウンロード</a>
104
+
105
+
106
+
107
+ ```

1

回答の修正

2016/02/12 11:26

投稿

K_S_
K_S_

スコア419

test CHANGED
@@ -1,42 +1,30 @@
1
- 「クライアント側独自SDK(javaScript)を使用なくてはいけない為、PHPの使用を考えています。」
1
+ 以下のコードどうでょう?
2
2
 
3
- の一文がよくわかりませんが、
3
+ 申し訳ありませんが、環境構築できていないので、全体で一回も試していません。
4
4
 
5
5
 
6
6
 
7
+ ファイルをダウンロードするコードはパーミッションを正しく設定しないとエラーになりました。
7
8
 
8
-
9
- 以下のコドでとりあえずアプロード、ダウド機能作れると思ます
9
+ ショエラが出た場合正しく設定してあげてください。
10
-
11
-
12
10
 
13
11
 
14
12
 
15
13
  ```html
16
14
 
17
- クライアント側からのファイルのアップロード(htmlの一部)
15
+ クライアント側からのファイルのアップロード
18
16
 
19
17
 
20
18
 
21
- <form action="upload.php" method="post" enctype="multipart/form-data">
19
+ <form action="http://XXX.XXX.XXX.XXX/upload.php" method="post" enctype="multipart/form-data">
22
20
 
23
- ファイル:<br />
24
-
25
- <input type="file" name="upfile" size="30" /><br />
21
+ <input type="file" name="upfile" size="30" style="display:none" value="C:work\file.txt" /><br />
26
-
27
- <br />
28
22
 
29
23
  <input type="submit" value="アップロード" />
30
24
 
31
25
  </form>
32
26
 
33
27
  ```
34
-
35
- ([ファイルのアップロード](http://www.php-labo.net/tutorial/php/upload.html)より抜粋)
36
-
37
-
38
-
39
- サーバー側はファイルを受信するシステムが必要ですね。
40
28
 
41
29
 
42
30
 
@@ -46,27 +34,13 @@
46
34
 
47
35
 
48
36
 
49
- <html>
50
-
51
- <head>
52
-
53
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
54
-
55
- <title>sample</title>
56
-
57
- </head>
58
-
59
- <body>
60
-
61
- <p><?php
37
+ <?php
62
-
63
-
64
38
 
65
39
  if (is_uploaded_file($_FILES["uplift"]["tmp_name"])) {
66
40
 
67
- if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) {
41
+ if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "folder/" . $_FILES["upfile"]["name"])) {
68
42
 
69
- chmod("files/" . $_FILES["upfile"]["name"], 0644);
43
+ chmod("folder/" . $_FILES["upfile"]["name"], 0644);
70
44
 
71
45
  echo $_FILES["upfile"]["name"] . "をアップロードしました。";
72
46
 
@@ -82,32 +56,30 @@
82
56
 
83
57
  }
84
58
 
85
-
86
-
87
- ?></p>
59
+ ?>
88
-
89
- </body>
90
-
91
- </html>
92
60
 
93
61
  ```
94
-
95
- ([ファイルのアップロード](http://www.php-labo.net/tutorial/php/upload.html)より抜粋)
96
-
97
-
98
-
99
- ダウンロードはファイルの存在するパスを設定すれば、簡易的に取得できます。
100
-
101
- 下記は「file.txt」というファイルがアップロードされたことを前提としたサンプルです。
102
62
 
103
63
 
104
64
 
105
65
  ```html
106
66
 
107
- クライアント側のファイルのダウンロード(htmlの一部
67
+ クライアント側のファイルのダウンロード(file.txtがアップロードされた後
108
68
 
109
69
 
110
70
 
71
+ <?php
72
+
73
+
74
+
111
- <a href="files/file.txt">ファイルのダウンロード</a>
75
+ $url = "http://XXX.XXX.XXX.XXX/folder/file.txt";
76
+
77
+ $data = file_get_contents($url);
78
+
79
+ file_put_contents('C:work\file.txt', $data);
80
+
81
+
82
+
83
+ ?>
112
84
 
113
85
  ```