问题描述
在手机端下载图片后(如:a.jpg),图片不能被直接打开,如果修改了文件名子,就可以打开了。请教高人,有没有什么办法解决?FileInfoDownloadFile=newFileInfo(filePath);context.Response.Buffer=false;//context.Response.ContentType="application/octet-stream";context.Response.ContentType="image/gjpeg";context.Response.AppendHeader("Content-Disposition","attachment;filename=a.jpg";context.Response.AppendHeader("Content-Length",DownloadFile.Length.ToString());context.Response.WriteFile(DownloadFile.FullName);context.Response.Flush();
解决方案
解决方案二:
下列代码,给一个文件夹下所有文件改名,供你参考inti=1;stringoldstr=DateTime.Now.ToString("yyyyMMddhhmm");DirectoryInfomyDir=newDirectoryInfo("RecordedFiles");foreach(FileInfofiinmyDir.GetFiles()){fi.MoveTo("RecordedFiles\"+oldstr+(i++).ToString()+"_.flv");}
解决方案三:
引用1楼From_TaiWan的回复:
下列代码,给一个文件夹下所有文件改名,供你参考inti=1;stringoldstr=DateTime.Now.ToString("yyyyMMddhhmm");DirectoryInfomyDir=newDirectoryInfo("RecordedFiles");foreach(FileInfofiinmyDir.GetFiles()){fi.MoveTo("RecordedFiles\"+oldstr+(i++).ToString()+"_.flv");}
你可能理解错我的意思了。我上面的代码是asp.net常用的图片下载代码,在电脑端的时候,下载的图片没有问题可以被识别为图片,但在手机上的时候,虽然也能下载图片,但就是不能被作为图片打开。因此我在想不是不在手机端需要输出更多的头部信息?
解决方案四:
不知道你是如何“打开”的。你的image/gjpeg写错了。实际上什么消息头都不添加,在手机端也应该可以打开图片。关键是从你的问题中看不出你是如何打开的。
解决方案五:
是不是文件名含中文了,或者文件名太长了?
解决方案六:
引用3楼sp1234的回复:
不知道你是如何“打开”的。你的image/gjpeg写错了。实际上什么消息头都不添加,在手机端也应该可以打开图片。关键是从你的问题中看不出你是如何打开的。
我试了很多方法都不行,image/gjpeg是我多次测试用的。打开方法就是下载完之后在手机顶部会提示下载完成,滑出信息,直接点下载记录来打开,提示让选择打开方式。在文件管理里面可以看到图片的缩略图,修改一下文件名子,就可以打开了,例如:a.jpg修改为ab.jpg就可以打开。
解决方案七:
引用4楼myhope88的回复:
是不是文件名含中文了,或者文件名太长了?
跟文件名没有关系的