我正在尝试在vb.net中生成一个字符串,然后将其发送到我的服务器,并将其发送到.php文件,该文件应将该字符串附加到.txt文件中。字符串中有多行。该字符串正确到达php文件。但是,在写入.txt文件的过程中,php会创建多余的空白行,这是我不希望的。
我想要的.txt文件中的内容:
line1
line2
line3
我得到的是
line1
line2
line3
我尝试更改fopen调用的参数(在参数中添加b以强制采用二进制模式),但这无济于事。我还尝试在vb.net代码中用“ \ n”和“ \ r \ n”替换vbNewLine来分隔字符串中的行,但不幸的是,这种情况无法识别,并像这样被写入.txt文件中。 >
line1 \r\n line2 \r\n line3
这是我的vb.net应用程序代码:
function sendStringToServer()
Dim stringToSend as String
stringToSend = "line1" & vbNewline
stringToSend &= "line2" & vbNewline
stringToSend &= "line3"
Dim wc As New WebClient
wc.Headers("content-type") = "application/x-www-form-urlencoded"
Dim response As String = wc.UploadString("http://www.example.com/uploaddata.php", "data=" & data)
MessageBox.Show(response)
(请注意,响应是正确的,没有多余的空行。) 并且有upploaddata.php代码:
<?php
if (isset($_POST["data"]))
{
echo($_POST["data"]);
$data=$_POST['data'];
$fp = fopen('data.txt', 'ab');
fwrite($fp, $data);
fclose($fp);
}
else
{
echo "ERROR: No data!";
}
?>
我在做什么错了?
编辑:被要求做一个最小,完整和可验证的示例后,我要粘贴代码和结果:
在vb.net应用程序中,将字符串发送到uploaddata.php的Sub:
function sendStringToServer()
Dim stringToSend as String
stringToSend = "line1" & vbNewline & "line2" & vbNewline & "line3"
Dim wc As New WebClient
wc.Headers("content-type") = "application/x-www-form-urlencoded"
Dim response As String = wc.UploadString("http://www.example.com/uploaddata.php", "data=" & data)
MessageBox.Show(response)
整个uploaddata.php内容:
<?php
if (isset($_POST["data"]))
{
var_dump($_POST['data']);
$data=$_POST['data'];
file_put_contents('data.txt', $data);
}
else
{
echo "ERROR: No data!";
}
?>
在vb.net应用程序中调用sendStringToServer()之后,data.txt的内容:
line1
line2
line3
答案 0 :(得分:0)
一些建议,其中一项有望解决您的问题。尝试使用deprecated而不是使用<div id = "myDiv">
<p> This is the first paragraph tag in the div.</p>
<p> I will try to loop through this div tag.</p>
<p> In order to get all of the elements used.</p>
<p> As well as the text in this div.</p>
</div>
<script>
var myDiv = document.getElementById("myDiv");
var pTags = myDiv.childNodes;
var text = ' ';
//creating iterator for pTags
for (var i = 0; i < pTags.length; i++;){
//check for nodeType == text type
if (pTags[i].nodeType == 3){
//combine nodevalue to one string
text += pTags[i].nodeValue;
}
}
//alert said string
alert(text);
</script>
(即using vbLf
BTW)。使用它们之前,请确保您的值是trimmed前导和尾随空格(我假设您的实际代码将使用变量。)此外,在作为POST数据发送之前,您的字符串还必须正确URL encoded。>
vbNewLine
在PHP方面,您可以使用function sendStringToServer()
Dim stringToSend as String
stringToSend = Trim("line1") & vbLf
stringToSend &= Trim("line2") & vbLf
stringToSend &= Trim("line3")
stringToSend = HttpUtility.UrlEncode(stringToSend)
Dim wc As New WebClient
wc.Headers("content-type") = "application/x-www-form-urlencoded"
Dim response As String = wc.UploadString("http://www.example.com/uploaddata.php", "data=" & stringToSend)
MessageBox.Show(response)
而不是旧的file_put_contents
,fopen
,fwrite
三人来简化代码。
fclose