SWFUpload,多文件上传续
在上一篇文章(SWFUpload多文件上传,文件大小增大问题 )中,谈到利用SWFUpload,来实现多文件上传,在实际的应用环境中,运行一段时间后,在WEB服务器上偶尔会有下列应用程序事件日志
事件代码: 3005
事件消息: 发生了未处理的异常
进程信息:
进程 ID: 2252
进程名: w3wp.exe
帐户名: NT AUTHORITY\NETWORK SERVICE
异常信息:
异常类型: ArgumentException
异常消息: 参数无效。
经过排查,发现有些图片,在上传的时候,无法获取原始文件名,尤其是文件名包含中文字符的情况下。
代码如下:
//根据文件名获取图片格式
private string GetFileExt(string str)
{
string ext, ext2;
ext2 = "";
ext = "jpg";
int pos = str.LastIndexOf('.');
if (pos != -1)
{
ext = str.Substring(pos + 1).ToLower();
if (ext == "jpeg")
ext2 = "jpg";
}
return string.IsNullOrEmpty(ext2) ? ext : ext2;
}
HttpPostedFile imgUpload = Request.Files["Filedata"];
originalImage = System.Drawing.Image.FromStream(imgUpload.InputStream);//注:imgUpload是HttpPostFile控件
picWidth = originalImage.Width;
picHeight = originalImage.Height;
picSize = int.Parse(imgUpload.InputStream.Length.ToString());
picName = GetFileName(imgUpload.FileName.Trim());
猜想应该是编码问题导致的,找到Web.Config,发现如下信息:<globalization requestEncoding="gb2312" /> 呵呵,修改成utf-8,问题解决!