【发布时间】:2023-03-16 16:48:01
【问题描述】:
我正在尝试从用户在我的 Web 应用程序中上传的图像的字节数组中创建一个 md5 字符串。 这是因为我希望图像分布在不同的文件夹中。 而且我不必使用用户 ID 作为文件夹名称。看起来更专业。
结果会是这样的:
/images/ 'first-two-char-of-md5' / 'the-complete-md5-string'.[jpg,png,bmp....]
这听起来是处理图像的好方法吗?
所以。 我的代码(来自互联网的东西。):
protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
if (CheckFileType(FileUpload1.FileName))
{
const int BUFFER_SIZE = 255;
Byte[] Buffer = new Byte[BUFFER_SIZE];
Stream theStream = FileUpload1.PostedFile.InputStream;
nBytesRead = theStream.Read(Buffer, 0, BUFFER_SIZE);
System.Text.ASCIIEncoding ASCIIEncoding = new ASCIIEncoding();
System.Text.UTF8Encoding utf8 = new UTF8Encoding();
//Just trying some stuff to see the output...
Label1.Text = ASCIIEncoding.GetString(CalculateMD5(theStream)) + "<br>" + utf8.GetString(CalculateMD5(theStream)) + "<br>" + Convert.ToBase64String(CalculateMD5(theStream));
}
}
}
private static byte[] _emptyBuffer = new byte[0];
public static byte[] CalculateMD5(Stream stream)
{
return CalculateMD5(stream, 64 * 1024);
}
public static byte[] CalculateMD5(Stream stream, int bufferSize)
{
MD5 md5Hasher = MD5.Create();
byte[] buffer = new byte[bufferSize];
int readBytes;
while ((readBytes = stream.Read(buffer, 0, bufferSize)) > 0)
{
md5Hasher.TransformBlock(buffer, 0, readBytes, buffer, 0);
}
md5Hasher.TransformFinalBlock(_emptyBuffer, 0, 0);
return md5Hasher.Hash;
}
结果。我从“calculateMD5()”得到了一些输出,但是当我试图把它放到 label1 上时。看看发生了什么。只有一堆奇怪的字符。 我在这里做错了什么?我希望它是 htmlsafe... a-z, A-Z,0-9 only。
【问题讨论】:
标签: c# asp.net file-upload md5