我有一個PHP腳本,它從我的C#代碼中獲取它的數據。我的C#代碼將POST數據發送到我的PHP腳本,包括一個base64字符串和一個文件名。有了這兩段數據,它應該在文件夾JSON中創建一個帶有文件名的JSON文件,然後它應該將解碼後的base64字符串寫入它剛創建的文件。在此之後,它應該將JSON數據保存到數據庫。但有一個問題,它不會創建JSON文件,它會將空白數據保存到我的數據庫中。以下是我迄今爲止:PHP腳本沒有創建和寫入JSON文件
PHP:
<?php
$link = new mysqli($host, $user, $pass, $db);
if($link ->connect_errno)
{
echo 'Database connection wrong<br/>';
}
else
{
if(isset($_POST['filename']) && isset($_POST['b64string']))
{
$jsonstring = base64_decode($_POST['b64string']);
$filename = $_POST['filename'] . '.json';
$create = fopen(__DIR__. "/json/" . $filename, "W+");
fwrite($create, $jsonstring);
$json = fread($create, filesize(__DIR__. "/json/" . $filename));
fclose($create);
$obj = json_decode($json);
$query_opslaan = "INSERT INTO SalesKicker (BedrijfsNaam, ContPers, TelNr, Email, Land, Plaats, POC) VALUES ('". $obj->bedrijfsNaam ."' , '". $obj->ContPers ."', '". $obj->TelNum ."', '". $obj->email ."', '". $obj->Land ."', '". $obj->Plaats ."', '". $obj->PostCode ."')";
mysqli_query($link, $query_opslaan) or die(mysqli_error($query_opslaan));
}
else
{
echo 'ERROR: no data!';
}
}
?>
它獲得是從下面的C#腳本中的數據:
if (reqCat == "bvg")
{
json = "{\"bedrijfsNaam\":\"" + bedrijfsNaam + "\"," +
"\"ContPers\":\"" + ContPers + "\"," +
"\"TelNum\":\"" + TelNum + "\"," +
"\"email\":\"" + email + "\"," +
"\"Land\":\"" + Land + "\"," +
"\"Plaats\":\"" + Plaats + "\"," +
"\"PostCode\":\"" + PostCode + "\"}";
var b64bytes = System.Text.Encoding.UTF8.GetBytes(json);
b64encode = System.Convert.ToBase64String(b64bytes);
using (WebClient client = new WebClient())
{
byte[] sendB64 = client.UploadData("http://" + ConfigurationManager.AppSettings["scripturi"].ToString() + "SalesKicker.php", "POST",
System.Text.Encoding.ASCII.GetBytes("b64string=" + b64encode + "&filename=" + dt.bedrijfsNaam));
}
}
這是我的文件夾結構:
public_html(這是所有PHP的東西所在) - > json(它應該保存的文件夾)
我現在不知道該怎麼做,所以我來這裏發佈我的問題。有人可以幫助我,並告訴我我在這裏做錯了什麼嗎?
'$ jsonstring'的內容是什麼? – jeroen
json文件夾是否存在?運行這段代碼的用戶能夠創建一個文件? – TehSphinX
$ jsongstring包含在PHP腳本中正確解碼的正確數據@jeroen –