У меня есть вопрос, который я не могу объяснитьWebservice PHP не получает base64 большое изображение
У меня есть C# программы, отправить изображение (скриншот всей веб-странице некоторого URL) кодирование в base64
static string ImageToBase64(System.Drawing.Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
// image is typeof Bitmap
string myImageData = ImageToBase64(image, System.Drawing.Imaging.ImageFormat.Jpeg);
using (WebClient client = new WebClient())
{
try
{
byte[] response = client.UploadValues("http://production/ws/imageBuilder", new NameValueCollection()
{
{ "myImageData", HttpUtility.UrlEncode(this.myImageData) }
{ "Url_", url.Authority },
{ "token", ImageHash }
});
Debug.WriteLine("Server Said: " + System.Text.Encoding.Default.GetString(response));
byte[] response2 = client.UploadValues("http://localhost/ws/imageBuilder", new NameValueCollection()
{
{ "myImageData", HttpUtility.UrlEncode(this.myImageData) }
{ "Url_", url.Authority },
{ "token", ImageHash }
});
Debug.WriteLine("Server Said: " + System.Text.Encoding.Default.GetString(response2));
}
catch(Exception e) {Debug.WriteLine(e.Message);}
}
на PHP стороне у меня есть только для тестирования
echo "length before decode ".strlen($_POST['myImageData']);
$imageData = base64_decode(urldecode($_POST['myImageData']));
echo "length after decode ".strlen($imageData);
Который возвращающегося с большим изображением (Exemple 1280 х 10 000)
[4908] Server Said: length before decode 0 length after decode 0
[4908] Server Said: length before decode 1333258 length after decode 925151
Так что на моем локальном сервере WAMP (в Windows 7) я получаю изображение, но в процессе производства (в Linux) ничего не получаю.
Но с «маленьким» изображением для примера размер «1280 x 1024» все в порядке, моя переменная $_POST['myImageData']
не пуста на производстве, она отлично работает.
[4908] Server Said: length before decode 66292 length after decode 46210
[4908] Server Said: length before decode 66292 length after decode 46210
ОБНОВЛЕНИЕ: Изображений маленькие J (между 200ko и 1.5mo).
на моем php.in в производстве У меня есть
upload_max_filesize = 20M
post_max_size = 18M
Мой Apache производства является mod_proxy
Вы используете лимит загрузки? Если вы отправите изображение как «multipart/form-data», вам может быть повезло больше. Затем веб-сервер предоставит вам сообщение об ошибке как файл-ввод вместо файла. Еще одно замечание - кодирование base64 раздувает ваши данные примерно на 33%. – Halcyon
Мой post_max_size достаточно. Это всего лишь изображение в формате JPEG, между 200ko и 1.5 mo:/Я попробую multipart/form-data – amdev