怎样才能恢复微信里面的电脑微信消息记录恢复

这四年多以来,邵连虎做过近百个网站,发现好多网站后台上传图片都会出现一些错误。也不管这个程序是ASP的还是PHP的。对于为什么网站后台上传图片失败,今天邵连虎结合自己的经验给大家总结一下。大家以后在搞网站时遇到相应的问题就好解决了。
第一件事,给客户做的婚庆网站上传图片失败
今天早上客户说网站后台上传图片出现错误,我让他看下图片格式,或是其他的地方,看到底是啥原因造成的。过一会我便远程帮用户看下是怎么回事。我感觉应该是用户的图片弄的太大的原因造成的,我便截个小图片上传,结果令我失望的是图片上传了竟然无法显示。
对于这个问题,不是图片太大,不是图片格式不对。那么到底是什么原因呢?我便在百度搜索为什么asp网站后台上传图片不显示,为什么asp网站后台上传图片失败。在百度搜索的结果当中没有一个满意的答案。大多数说的都是网站程序的问题,或是路径不对。
这个程序我以前就给客户做过一个婚庆网站,而且用了几年了,一直都是好好的。我还记得以前看过用户上传图片。以前用的是美国的空间,难道现在用香港的空间就不管用了吗?我感觉是空间有问题就找到了空间商,看问题到底出在哪里。
打开旺旺后,我问空间商为什么我网站的后台上传图片不显示呢,以前用过一个美国的空间好好的,用了香港的空间却不行了。空间商给我回复的答案是,看下空间有没有满。
我便打开了空间的后台,查看空间的使用情况,天哪,没想到的是用了100%。怎么可能会这样呢。我又看了下以前给做的站的空间,是59%。我这站还刚做好怎么就用这么多呢?是不是哪里出现了什么问题。
我又找我的空间商问了下,他说看有没有压缩包。我打开了FTP看了下,想起来以前用ASP本地测试软件,我想可能是这款软件造成的,便给删除了。也没有发现什么压缩包。可是空间的大小还是只减少几M而已,我又把多余的图片给删除了,却还是不知道为什么空间用的那么多。
第二件事,wordpress后台上传图片出错
邵连虎搏客就是用的wordpress程序。这款程序的功能是非常强大的。可是在开始的时候上传图片就是会容易出错。后来在百度搜索了下才知道WP上传的图片的名字必须是英文的。至于这个原因,我猜可能是这款程序是老外造的原因吧。不支持中文的图片名。
总结网站后台上传图片失败的原因:
1,图片太大或太小
有些网站的后台是规定图片上传的大小的,有的还可以自定义的设置。这样的好处可以给网站节省空间。如果大家都弄一些大图片来上传的话,空间也很快被用完的。然而有的图片太小的话也影响美观。所以,一般的网站都有图片最大,最小限制。
2,图片格式不对
我们在上传图片的时候,也很少在乎弄什么格式的图片。不过有些网站的后台是规定上传什么格式的图片的。比如早上邵连虎给客户的网站上传图片弄的是PNG格式的图片就不行,然后网站示需要JPG或GIF格式的才可以。
3,程序错误造成的
一款完整的网站程序可以说功能一般了很齐全的,也不会出现什么错误,最有可能的就是程序不完整造成的。比如程序有错误,或是图片路径不对,不能显示等问题。对于程序的错误造成的网站后台上传图片失败的原因,就只好再换程序了。
4,空间的原因
空间的原因最主要的就是空间满了,上传图片就上传不了了。就像人吃饱了饭,再使劲的吃也吃不进去的。这样的话就只有再增加空间了,或者删除一些没用的东西。
5,浏览器不支持
刚才客户弄的婚庆网站说后台上传图片失败,而且也说一个栏目根本无法上传图片。我不相信,便自己打开后台看了下。发现用户的浏览器根本没有显示。我一问才知道他用的是猎豹浏览器。我还真没听说过这款浏览器,直接叫他用IE或者360的。
6,浏览器兼容问题
有些时候换不同的浏览器确实管用。不过有时候光换浏览器还是不行的。邵连虎发现有些网站的后台还必须得用兼容模式才能显示页面。比如360浏览器就有极速模式和兼容模式二种。只有用了兼容模式才可以完全显示。
7,网站后台设置的问题
网站后台上传图片一般都是正常显示的,不过有些网站的后台上传图片后需要点击显示或者不显示。而且有些首页的图片必须是推荐才可以显示的。所以,你的网站是怎么样显示图片的也要看清楚。
对于网站后台上传图片失败或不显示的图片邵连虎给大家总结了以上几点,如果大家还有什么好的方法也可以回复本文留言说下。
邵连虎博客—手机赚钱第一品牌!其他回答(1)
调用代码写的应该有,代码贴出来看看,或发给我QQ:
园豆:3740
&&&您需要以后才能回答,未注册用户请先。写好的程序,本地上传图片没有问题,可是上传到服务器就出问题 - ThinkPHP框架
写好的程序,本地上传图片没有问题,可是上传到服务器就出问题
服务器php环境5.5.7
在本地上传图片没有问题,可是在服务器上提示 &路径找不到,请创建路径..&
问题是 上传图片的路径文件夹 存在啊!
然后试了几个TP上传图片的源码,还是一样的错误
最后安装了一个DZ论坛程序,可以上传图片
什么情况呢??
积分:1638
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。我想要上传我的,但是要JPG的才行,我不知道那个是什么意思啊,你们可以告诉我吗?
问题很简单,因为你上传的图片要占用人家的网络硬盘空间,JPG格式的图片数据量小,所以很多地方都是限制用JPG格式或GIF格式,
在相同的尺寸下,其他格式的图片数据量都比较大
比如同一张照片,BMP格式的比JPG格式的数据量大10倍左右
只要是图象处理软件都可以用来转换图片的格式,简单的方法就是把图片打开后“另存为”在存的时候为它选一个格式就行了。
其他答案(共4个回答)
传输。GIF格式的不足之处在于它只能处理256色,不能用于存储真彩色图像。
2.BMP格式
BMP格式是微软Windows应用程序所支持的,特别是图像处理软件,基本上都支持BMP格式。在存储时,既能节省磁盘空间,又不牺牲任何图像数据。不过其劣势也比较明显,因为其图像文件的大小比JPG等格式要大得多。
3.JPG格式
JPG是JPEG的缩写,JPEG几乎不同于当前使用的任何一种数字压缩方法,它无法重建原始图像。与 GIF 格式不同,JPEG 保留 RGB 图像中的所有颜色信息,但通过有选择地扔掉数据来压缩文件大小。 JPEG 图像在打开时自动解压缩。压缩级别越高,得到的图像品质越低;压缩级别越低,得到的图像品质越高。在大多数情况下,“最佳”品质选项产生的结果与原图像几乎无分别。
4.PSD格式
PSD格式是Photoshop的一种专用存储格式,在Photoshop中应...
图片的格式主要有如下几种:
1.GIF格式
GIF格式)形成一种压缩的8位图像文件,这种格式的文件目前多用于相关信息传输。GIF格式的不足之处在于它只能处理256色,不能用于存储真彩色图像。
2.BMP格式
BMP格式是微软Windows应用程序所支持的,特别是图像处理软件,基本上都支持BMP格式。在存储时,既能节省磁盘空间,又不牺牲任何图像数据。不过其劣势也比较明显,因为其图像文件的大小比JPG等格式要大得多。
3.JPG格式
JPG是JPEG的缩写,JPEG几乎不同于当前使用的任何一种数字压缩方法,它无法重建原始图像。与 GIF 格式不同,JPEG 保留 RGB 图像中的所有颜色信息,但通过有选择地扔掉数据来压缩文件大小。 JPEG 图像在打开时自动解压缩。压缩级别越高,得到的图像品质越低;压缩级别越低,得到的图像品质越高。在大多数情况下,“最佳”品质选项产生的结果与原图像几乎无分别。
4.PSD格式
PSD格式是Photoshop的一种专用存储格式,在Photoshop中应用时,存取速度很快。在制作字幕、静态背景和自定义的滤镜时,图像存为PSD格式在交换中较为方便。
5.TIF格式
TIF文件格式,最早是为了存储扫描仪图像而设计的。它的最大的特点就是与计算机的结构、操作系统以及图形硬件系统无关。它可处理黑白、灰度、彩色图像。在存储真彩色图像时和BMP格式一样,直接存储RGB三原色的浓度值而不使用彩色映射(调色板)。对于介质之间的交换,TIF称得上是位图格式的最佳选择之一。
6.PNG格式
便携网络图形 (PNG) 格式是作为 GIF 的无专利替代品开发的,用于在 World Wide Web 上无损压缩和显示图像。与 GIF 不同,PNG 支持 24 位图像并产生无锯齿状边缘的背景透明度;但是,某些 Web 浏览器不支持 PNG 图像。
把你存的图片双击,再点击重新保存,记得选择你需要的图片格式,然后就行了,不需要任何工具!!!
◆◆◆?W﹎Ziㄗpo刚刚搬家,欢迎大家来踩,东西尚少...
使用魔影工厂或者格式工厂转换
他说的参数你可能听着玄乎
事实上大部分的手机只有3种格式
AVI 3GP 和MP4
还有需要你记的是分辨率
因为不知道...
这两种其实是一种格式,两种叫法。
jpg格式是一种图片格式,是一种比较常见的图画格式,如果你的图片是其他格式的话,你可以通过以下方法转化:
1、photo...
是属于jpg格式的
用会声会影就很好啊!
他能满足你的要求,他能将你的相片做成如电影一般的视频文件,并有多种转场特效,绘声绘影10及以上版本支持字幕文件,可以自己加入喜欢的音乐
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区引言:开始尝试使用MarkDown语法写文档,发现图片必须用外链的形式才能插入到文章中,而自己平时最常用的插入图片方式就是QQ截屏,觉得很不方便所以制作的小工具辅助上传,因为时间和水平有限,其实代码写的很粗糙,以后有时间会不断改进。
http抓包和分析
上传用的网址是极简图床 ,这个图床内部使用的是六牛云,因为这个图床的上传不需要身份认证比较简单,所以就用它做的,后期还是要换到六牛云比较保险。
抓包使用的是Fiddler 4 ,开启之后相当于一个代理,电脑几乎所有的网络请求都会被监视到,但是浏览器的包需要设置一下代理,IP写本机,端口号8888
== 注意 ==:这个代理设置会影响到IE浏览器,如果关掉了fiddler没有删掉代理,容易出现的一个奇葩问题就是TFS无法登陆。
抓包的结果是这样的:
数据包里面有几个需要注意的点:
url的参数里面包含了图片的格式
上传需要带Cookie才能成功
图片不是以那种表单的形式上传,而是直接把base64编码的字符串放到了http的主体里面
httpwebrequest模拟post
在这里面我遇到了一个问题,就是cookie的获取,我用网上给的那种在爬虫程序中获取cookie 的方式并没有成功,后来我想这种字符串类型的cookie不就是http头里面的一部分信息么,然后就把抓包里面的cookie直接以键值对的方式写到了http头里面,这个也不知道以后会有什么弊端,代码如下:
public static string PostHttp(string url, byte[] body)
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = &text/plain&;
httpWebRequest.Method = &POST&;
httpWebRequest.Timeout = 20000;
httpWebRequest.Headers.Add(&Cookie&, cookieStr);
byte[] btBodys =
httpWebRequest.ContentLength = btBodys.L
httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
httpWebResponse.Close();
streamReader.Close();
httpWebRequest.Abort();
httpWebResponse.Close();
return responseC
HttpClient,HttpWebRequest,HttpWebResponse这三个类是封装的http请求的类,其中HttpClient的封装程度最高,关于这三个类的具体使用和注意事项准备再写一个总结。
返回的值是Json形式,这个在Fiddler抓的包里面能看见,用Json.Net解析一下就可以拿到外链字符串了。
监听剪贴板
这个是目前来说我觉得比较麻烦的地方,因为涉及到了对windows这个操作系统的编程,比如剪贴板的变化,或者快捷键(ctrl+v)的监听,这些有一部分要调用windows操作系统的API,更有一些需要使用一种叫==HOOK==的技术,甚至可以hook住QQ截屏(ctrl+alt+a)这个函数的地址,这个应该是实现效果的最优解。
但是因为自己水平有限,所以选择了最简单的调用Windows API的实现方式。
1·剪贴板介绍
剪贴板是非常方便的进程间通讯,下面是引用的一段解释
剪贴板是Windows系统一段可连续的。可随存放信息的大小而变化的内存空间,用来临时存放交换信息。内置在windows并且使用系统的内部资源RAM,或虚拟内存来临时保存剪切和复制的信息,可以存放的信息种类是多种多样的。剪切或复制时保存在剪贴板上的信息,只有再剪贴或复制另外的信息,或停电、或退出windows,或有意地清除时,才可能更新或清除其内容,即剪贴或复制一次,就可以粘贴多次。
2·剪贴板引用
C#定义了一个类System.Windows.Forms.Clipboard来简化剪切板操作,要使用剪贴板要先引入三个函数:
[System.Runtime.InteropServices.DllImport(&user32&)]
private static extern IntPtr SetClipboardViewer(IntPtr hwnd);
[System.Runtime.InteropServices.DllImport(&user32&)]
private static extern IntPtr ChangeClipboardChain(IntPtr hwnd,IntPtr hWndNext);
[System.Runtime.InteropServices.DllImport(&user32&)]
private static extern int SendMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam);
还有两个常量:
const int WM_DRAWCLIPBOARD = 0x308;
const int WM_CHANGECBCHAIN = 0x30D;
IntPtr SetClipboardViewer(IntPtr hwnd):
用于往观察链中添加一个窗口句柄,这个窗口就可成为观察链中的一员了,返回值指向下一个观察者。
IntPtr ChangeClipboardChain(IntPtr hwnd,IntPtr hWndNext): 删除由hwnd指定的观察链成员,这是一个窗口句柄,第二个参数hWndNext是观察链中下一个窗口的句柄
int SendMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam): 发送消息,还有一个很重要的作用是==将WM_DRAWCLIPBOARD 消息传递到下一个观察链中的窗口==
观察链:其实有很多程序在一起监视剪贴板,比如迅雷在检测到你复制了下载链接的时候,就会自动启动。
3·剪贴板编程
定义完成后,可以分三部来使用,第一步把自己的窗口添加到观察链中成为观察者,并保存下一个观察者的句柄;第二步监视剪切板,并把剪切板变化的消息发送给下一个观察者;第三步撤消自己定义的观察者,并通知下一个观察者。
第一步:把自己的窗口添加到观察链中成为观察者,并保存下一个观察者的句柄
//存放观察链中下一个窗口句柄
IntPtr NextClipH
private void Form1_Load(object sender, System.EventArgs e)
//获得观察链中下一个窗口句柄
NextClipHwnd=SetClipboardViewer(this.Handle);
第二步:监视剪切板,并把剪切板变化的消息发送给下一个观察者,这里需要重载WndProc方法;
这里用到两个消息常量:
const int WM_DRAWCLIPBOARD = 0x308;
const int WM_CHANGECBCHAIN = 0x30D;
protected override void WndProc(ref System.Windows.Forms.Message m)
switch(m.Msg)
case WM_DRAWCLIPBOARD:
//将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,m.Msg,m.WParam,m.LParam);
IDataObject iData = Clipboard.GetDataObject();
//检测文本
if(iData.GetDataPresent(DataFormats.Text)|iData.GetDataPresent(DataFormats.OemText))
this.richTextBox1.Text=(String)iData.GetData(DataFormats.Text);
//检测图像
if (iData.GetDataPresent(DataFormats.Bitmap))
pictureBox1.Image=Clipboard.GetImage();
NewClipData();
//检测自定义类型
if (iData.GetDataPresent(&myFormat&))
MyObj myobj=(MyObj)iData.GetData(&myFormat&);
this.richTextBox1.Text=myobj.ObjN
base.WndProc(ref m);
第三步:撤消自己定义的观察者,并通知下一个观察者。
private void Form1_Closed(object sender, System.EventArgs e)
//从观察链中删除本观察窗口(第一个参数:将要删除的窗口的句柄;第二个参数://观察链中下一个窗口的句柄 )
ChangeClipboardChain(this.Handle,NextClipHwnd);
//将变动消息WM_CHANGECBCHAIN消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,WM_CHANGECBCHAIN,this.Handle,NextClipHwnd);
我自己的代码并非完全按照上面的格式书写。
读取图片然后转码
这一部分主要是编码,字节数组和流的操作,就直接贴代码了。
//读取图片并且进行操作
private void Handler()
Image image = Clipboard.GetImage();
if (image != null)
string base64str = ImageToBase64String(image);
byte[] decodedByteArray = Encoding.UTF8.GetBytes(base64str);
string responsdata = PostHttp(uri, decodedByteArray);
ImageInfo info = JsonConvert.DeserializeObject&ImageInfo&(responsdata);
Clipboard.SetDataObject(&![](& + info.imageUrl + &)&);
//图片转base64编码
private string ImageToBase64String(Image imageData)
string base64;
MemoryStream memory = new MemoryStream();
imageData.Save(memory, ImageFormat.Png);
base64 = System.Convert.ToBase64String(memory.ToArray());
memory.Close();
return base64;
一些知识点的总结
==[DllImport(&user32.dll&, CharSet = CharSet.Auto)]==:这是导入Windows系统自带的user32.dll中的函数(API),也可以用于C++编写的带有导出函数的DLL
==private IntPtr nextClipboardViewer== :C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在您调用的API函数中一定有类似窗体句柄这样的参数,那么当您声明这个函数时,您应该将它显式地声明为IntPtr类型。
==句柄==:句柄,是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。
做的工具虽然小,但是涉及到了好多方面的知识,其中Windows编程这一块是新的领域,http是加深了理解,IO操作和Image操作是学过但是已经不熟悉了,接下来的时间查缺补漏,然后把东西好好完善一下。
下载链接:
阅读(...) 评论()

我要回帖

更多关于 打开微信才能收到消息 的文章

 

随机推荐