【发布时间】:2015-08-14 10:50:12
【问题描述】:
作为一个例子,我用一个调整大小的图像转换了一个画布元素,并发布到一个隐藏的输入字段中,该字段现在被编码为
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...
然后将该值发布到同一页面,我需要将该字符串转换为图像并保存到服务器上。
代码隐藏文件 (upload.aspx)
protected void btnUpload_Click(object sender, EventArgs e)
{
HttpPostedFile filePosted = Request.Files["newinput"];
string base64String = filePosted.ToString();
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
//I DONT KNOW HOW TO WRITE ABOVE INTO THE SaveAs CONDITION BELOW
if (filePosted != null && filePosted.ContentLength > 0)
{
string fileNameApplication = Path.GetFileName(filePosted.FileName);
string fileExtensionApplication = Path.GetExtension(fileNameApplication);
// generating a random guid for a new file at server for the uploaded file
string newFile = Guid.NewGuid().ToString() + fileExtensionApplication;
// getting a valid server path to save
string filePath = Path.Combine(Server.MapPath("~/Assets/") + Request.QueryString["id"] + "/", newFile);
if (fileNameApplication != String.Empty)
{
filePosted.SaveAs(filePath);
}
}
我很确定我需要将图像数据转换为二进制文件,然后再保存到服务器上,但我不太明白我需要如何修改上面的代码。有任何想法吗?保存到服务器的代码不起作用。
一旦我将其转换为图像并按上述更改其名称 - 我将通过 LINQ 将其存储回数据库 - 并附加一个 URL。
任何帮助将不胜感激。
【问题讨论】:
-
从技术上讲,不,这不是答案,因为我已经尝试过了,并且代码不起作用,因此我发布的原因。
-
这里有任何错误/异常吗?
-
我不太明白如何添加“代码” File.WriteAllBytes( Path.Combine (@"D:\apps\PJP_TEST\PJPTest\Online\ImageStorage\" , imgName ) , imageBytes ) ;
-
我希望能够将编码转换为文件并保存到服务器(不是客户端)
-
所以建议尽可能重复的链接是非常正确的。您只需要从字符串中获取编码部分并使用那里给出的答案。
标签: c# asp.net canvas file-upload character-encoding