مشکل در ارسال ناقص تصویر بصورت رشته به سرور
سلام وقت بخیر
میخواستم تصویری را از سی شارپ به سمت سرور اپلود کنم
سمت سرور بدین صورت در 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 کردم دیدم در رشته ای که ارسال کرده قسمت هایی که دارای کاراکتر + هست تبدیل به فاصله شده و به خاطرهمین هست که عکس ناقص نمایش داده میشه.
بخاطرهمین فکر میکنم مشکل از کدهای سمت سی شارپ من باشه....نظری دارید در این باره؟
نقل قول: مشکل در ارسال ناقص تصویر بصورت رشته به سرور
اومدم سمت سرور همانطور که میگفتم بجای کاراکتر + با فاصله جایگزین میشد دوباره جایگزینش کردم :
$image=str_replace(" ","+",$image);
و الان به درستی اپلود شد....اما چرا اینطور جایگزین شده؟مشکل در تبدیل من هست ؟:متفکر:
نقل قول: مشکل در ارسال ناقص تصویر بصورت رشته به سرور
محتوا را از نوع application/base64 معرفی کنید. سمت پی اچ پی چک کنید ببینید درست میشه یا نه
نقل قول: مشکل در ارسال ناقص تصویر بصورت رشته به سرور
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
محتوا را از نوع application/base64 معرفی کنید. سمت پی اچ پی چک کنید ببینید درست میشه یا نه
ممنون از توجهتون
متاسفانه در این حالت با اینکه خطایی هم نمیده اما عکس با حجم صفر اپلود میشه!
request.ContentType = "application/base64";
نقل قول: مشکل در ارسال ناقص تصویر بصورت رشته به سرور
چون در url کاراکتر + به معنی کاراکتر space هست این اتفاق میفته. شما داده رو کد کنید که مشکلی پیش نیاد و در طرف php هم + دریافت بشه
var postData = "image=" + System.Net.WebUtility.UrlEncode(img);
نقل قول: مشکل در ارسال ناقص تصویر بصورت رشته به سرور
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
چون در url کاراکتر + به معنی کاراکتر space هست این اتفاق میفته. شما داده رو کد کنید که مشکلی پیش نیاد و در طرف php هم + دریافت بشه
var postData = "image=" + System.Net.WebUtility.UrlEncode(img);
درسته من این قسمت رو حواسم نبوده...متشکرم مشکل حل شد