Я использую программу чтения файлов в JavaScript, мне нужно отправить изображение в WebApi и преобразовать его в массив байтов и сохранить его на сервере. Его работа прекрасна. Теперь моя проблема - base64 string увеличение размера изображения, Пусть говорят, если я загрузить изображение 30 КБ, это хранение имеет 389Kb сервер, Как я могу сохранить в том же размере или уменьшить размер изображения должен помочьУменьшить размер изображения при преобразовании в Base64
//File Reader
function OnFileEditImageEntry(file) {
var reader = new FileReader();
reader.onloadend = function (evt) {
var ImageBase64 = evt.target.result;
return ImageBase64 ;
};
reader.readAsDataURL(file);
}
//WEB API//
public IHttpActionResult UpdateUserDetails(ImageModel model)
{
try
{
if (model.ImageBase64 != "")
{
var PicDataUrl = "";
string ftpurl = "ftp://xxx.xxxxx.xxxx/";
var username = "xxx";
var password = "xxxxx";
string UploadDirectory = "xxxx/xx";
string FileName =model.ImageFileName;
String uploadUrl = String.Format("{0}{1}/{2}", ftpurl, UploadDirectory,FileName);
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(uploadUrl);
req.Proxy = null;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.Credentials = new NetworkCredential(username, password);
req.EnableSsl = false;
req.UseBinary = true;
req.UsePassive = true;
byte[] data =Convert.FromBase64String(model.ImageBase64);
req.ContentLength = data.Length;
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
}
}
}
Почему вы не отправить его как необработанные байты? Преобразование в Base64 определенно влияет на размер и производительность. В зависимости от фактических данных, которые вы отправляете, применяя сжатие gzip к этим необработанным байтам, можно еще больше уменьшить размер. Но, учитывая, что вы загружаете изображения, они уже сжаты (если вы не используете необработанный формат), и gzip не принесет вам большой пользы. –
Я попробовал reader.readAsBinaryString (файл); в файловом считывателе, он не дает двоичных данных, он дает мне некоторую случайную строку, поэтому я не могу преобразовать ее в массив байтов в webApi – Nikil
Различные форматы будут иметь разные размеры, поэтому, если вы не перевернете их обратно в исходный формат, тогда вам нужно ожидать это. Обычный подход к изображениям заключается в том, чтобы сохранить изображение (как изображение, а не строку base64) в папке, а затем просто сохранить имя файла в базе данных. Есть плюсы и минусы для всех способов обработки загруженных изображений, но для меня это самый ясный способ сделать это (плюс это уменьшает время загрузки страницы, если вы когда-либо захотите отображать изображения на веб-сайте). – Archer