Arduino POST无法完成

我正在用以太网屏蔽在Arduino设备上发送一个请求。 服务器是一个Node.js服务器,并且我已经处理了发布请求服务器端的结果与formaline和强大。 POST被处理,但是不能完成文件传输。

loadstart:{“time”:1339574854222}“bytesReceived”:178,“filesCompleted”:0

这是发送post的代码:

String boundary = "--73249889599006000"; String URL = "/upload"; String contentType = "text/plain"; String fileName = "text.txt"; void sendData(){ String thisFile = "This is not the contents of thisFile"; Serial.println("connecting..."); // If you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: String postHeader = "POST " + URL + " HTTP/1.1\n"; postHeader += "Content-Type: multipart/form-data; boundary="; postHeader += boundary + "\n"; postHeader += "Host: 192.168.3.78\n"; postHeader += "User-Agent: Arduino\n"; postHeader += "Referer: http://192.168.3.78/upload\n"; String requestHead = "\n--" + boundary + "\n"; requestHead += "Content-Disposition: form-data; name=\"upload\"; filename=\"" + fileName + "\"\n"; requestHead += "Content-Type: " + contentType + "\n\n"; String tail = "\n--" + boundary + "--\n\n"; int contentLength = requestHead.length() + thisFile.length() + tail.length(); postHeader += "Content-Length: " + String(contentLength, DEC) + "\n\n"; char charBuf0[postHeader.length() + 1]; postHeader.toCharArray(charBuf0, postHeader.length() + 1); client.write(charBuf0); char charBuf1[requestHead.length() + 1]; postHeader.toCharArray(charBuf1, requestHead.length() + 1); client.write(charBuf1); char charBuf2[thisFile.length() + 1]; postHeader.toCharArray(charBuf2, thisFile.length() + 1); client.write(charBuf2); char charBuf3[tail.length() + 1]; postHeader.toCharArray(charBuf3, tail.length() + 1); client.write(charBuf3); } 

行结尾和其他一些调整sorting它。 这里是更新的代码,适合与福尔马林。

 String boundary = "--73249889599006000"; String URL = "/upload"; String contentType = "text/plain"; String fileName = "text.txt"; void sendData(){ String thisFile = "This is not the contents of thisFile\r\n\r\n"; Serial.println("connecting..."); // if you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: String postHeader = "POST " + url + " HTTP/1.1\r\n"; postHeader += "Content-Type: multipart/form-data; boundary="; postHeader += boundary + "\r\n"; postHeader += "Host: 192.168.3.18\r\n"; postHeader += "User-Agent: Arduino\r\n"; postHeader += "Referer: http://192.168.3.18/upload\r\n"; String requestHead = "--" + boundary + "\r\n"; requestHead += "Content-Disposition: form-data; name=\"upload\"; filename=\"" + fileName + "\"\r\n"; requestHead += "Content-Type: " + contentType + "\r\n\r\n"; String tail = "--" + boundary + "--\r\n\r\n"; int contentLength = requestHead.length() + thisFile.length() + tail.length(); postHeader += "Content-Length: " + String(contentLength, DEC) + "\n\n"; Serial.print("Content-Length: "); Serial.println(String(contentLength, DEC)); char charBuf0[postHeader.length() + 1]; postHeader.toCharArray(charBuf0, postHeader.length() + 1); client.write(charBuf0); Serial.print(charBuf0); char charBuf1[requestHead.length() + 1]; requestHead.toCharArray(charBuf1, requestHead.length() + 1); client.write(charBuf1); char charBuf2[thisFile.length() + 1]; thisFile.toCharArray(charBuf2, thisFile.length() + 1); client.write(charBuf2); Serial.print(charBuf2); char charBuf3[tail.length() + 1]; tail.toCharArray(charBuf3, tail.length() + 1); client.write(charBuf3); Serial.print(charBuf3); } else { // kf you didn't get a connection to the server: Serial.println("connection failed"); } }