samiasoft
جمعه 12 مهر 1398, 17:44 عصر
سلام وقت بخیر
میخواستم تصویری را از سی شارپ به سمت سرور اپلود کنم
سمت سرور بدین صورت در php دستورات رو نوشتم :
<?php $image=$_POST["image"];
$file_name=date("Y-m-d-H-i-s");
$target_dir = "uploads/";$target_file = $target_dir . $file_name.".jpg";
if (file_put_contents($target_file, base64_decode($image))) {
$status="ok";
} else { $status="error"; }
echo $status;
?>
در سی شارپ هم تصویر رو بدین صورت به رشته تبدیل کردم :
public string getStringImage(string Path) {
using (System.Drawing.Image image = System.Drawing.Image.FromFile(Path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
و بدین صورت با متد post سمت سرور ارسال کردم :
string img = getStringImage(@"E:\1.jpg");
var request = (HttpWebRequest)WebRequest.Create("................/uploader.php");
var postData = "image=" + img;
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToE nd();
اما متاسفانه تصویر اپلود شده بصورت ناقص اپلود میشه...یعنی حجمش کمتر از حجمی است که تصویر اولیه داره....موقع اجرا هم قسمتی از عکس نمایش داده میشه.
من اومدم سمت سرور رشته ای که ارسال میشد رو echo کردم دیدم در رشته ای که ارسال کرده قسمت هایی که دارای کاراکتر + هست تبدیل به فاصله شده و به خاطرهمین هست که عکس ناقص نمایش داده میشه.
بخاطرهمین فکر میکنم مشکل از کدهای سمت سی شارپ من باشه....نظری دارید در این باره؟
میخواستم تصویری را از سی شارپ به سمت سرور اپلود کنم
سمت سرور بدین صورت در php دستورات رو نوشتم :
<?php $image=$_POST["image"];
$file_name=date("Y-m-d-H-i-s");
$target_dir = "uploads/";$target_file = $target_dir . $file_name.".jpg";
if (file_put_contents($target_file, base64_decode($image))) {
$status="ok";
} else { $status="error"; }
echo $status;
?>
در سی شارپ هم تصویر رو بدین صورت به رشته تبدیل کردم :
public string getStringImage(string Path) {
using (System.Drawing.Image image = System.Drawing.Image.FromFile(Path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
byte[] imageBytes = m.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
و بدین صورت با متد post سمت سرور ارسال کردم :
string img = getStringImage(@"E:\1.jpg");
var request = (HttpWebRequest)WebRequest.Create("................/uploader.php");
var postData = "image=" + img;
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToE nd();
اما متاسفانه تصویر اپلود شده بصورت ناقص اپلود میشه...یعنی حجمش کمتر از حجمی است که تصویر اولیه داره....موقع اجرا هم قسمتی از عکس نمایش داده میشه.
من اومدم سمت سرور رشته ای که ارسال میشد رو echo کردم دیدم در رشته ای که ارسال کرده قسمت هایی که دارای کاراکتر + هست تبدیل به فاصله شده و به خاطرهمین هست که عکس ناقص نمایش داده میشه.
بخاطرهمین فکر میکنم مشکل از کدهای سمت سی شارپ من باشه....نظری دارید در این باره؟