Node.js Arduino POST未能完成

Node.js Arduino POST未能完成,node.js,arduino,Node.js,Arduino,我正在通过以太网对Arduino设备发出post请求。服务器是一个服务器,我用福尔马林和Professional处理了post请求服务器端,得到了相同的结果。POST已被处理,但未完成文件传输 loadstart:{“时间”:1339574854222} “收到的bytesReceived”:178, “文件已完成”:0 这是发送帖子的代码: String boundary=“--73249889599006000”; 字符串URL=“/upload”; 字符串contentType=“text

我正在通过以太网对Arduino设备发出post请求。服务器是一个服务器,我用福尔马林和Professional处理了post请求服务器端,得到了相同的结果。POST已被处理,但未完成文件传输

loadstart:{“时间”:1339574854222} “收到的bytesReceived”:178, “文件已完成”:0

这是发送帖子的代码:

String boundary=“--73249889599006000”;
字符串URL=“/upload”;
字符串contentType=“text/plain”;
字符串fileName=“text.txt”;
void sendData(){
String thisFile=“这不是thisFile的内容”;
Serial.println(“连接…”);
//如果您获得连接,请通过串行方式报告:
if(客户端连接(服务器,80)){
Serial.println(“已连接”);
//发出HTTP请求:
字符串postHeader=“POST”+URL+“HTTP/1.1\n”;
postHeader+=“内容类型:多部分/表单数据;boundary=”;
postHeader+=边界+“\n”;
postHeader+=“主机:192.168.3.78\n”;
postHeader+=“用户代理:Arduino\n”;
postHeader+=“引用者:http://192.168.3.78/upload\n”;
字符串requestHead=“\n--”+boundary+“\n”;
requestHead+=“内容处置:表单数据;名称=\”上传\“;文件名=\”+文件名+“\\n”;
requestHead+=“内容类型:”+contentType+“\n\n”;
String tail=“\n-->+boundary+”-->\n\n”;
int contentLength=requestHead.length()+thisFile.length()+tail.length();
postHeader+=“内容长度:”+字符串(contentLength,DEC)+“\n\n”;
char charBuf0[postHeader.length()+1];
toCharArray(charBuf0,postHeader.length()+1);
client.write(charBuf0);
char charBuf1[requestHead.length()+1];
toCharArray(charBuf1,requestHead.length()+1);
client.write(charBuf1);
char charBuf2[thisFile.length()+1];
toCharArray(charBuf2,thisFile.length()+1);
client.write(charBuf2);
char charBuf3[tail.length()+1];
postHeader.toCharArray(charBuf3,tail.length()+1);
client.write(charBuf3);
}

行结尾和其他一些调整对其进行了排序。以下是更新后的代码,可以很好地处理福尔马林

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

我会尝试从计算机发送准确的负载,看看这是Arduino的问题还是您正在创建的负载的问题。当然:我发现telnet是最好的,因为您可以逐行获得反馈。将Arduino paste的串行输出输入telnet lbl,冲洗,重复。