模拟QQ心情图片上传预览示例
在前端开发中,对于图片上传预览的功能,安全性和用户体验同样重要。考虑到安全性的因素,直接使用JavaScript获取本地图片进行预览在当前的技术环境下可能存在一定的风险,因此我们在开发类似QQ心情发布框的功能时,需要寻找一些可靠的解决方案。
对于这样的需求,市面上存在许多jQuery插件可供选择。在此分享几款我亲自尝试过的插件,希望对有需求的朋友有所帮助。
首先是 jQuery File Upload。这款插件的Demo地址是[ 它的优点在于使用jQuery进行图片的异步上传,具有极好的可控性,可以根据开发者的需求进行定制。它在一些浏览器如IE9中并不支持图片预览功能,且图片选择框不支持多文件选择,这些缺点使得它在某些场景下可能无法满足我们的需求。
其次是 CFUpdate。这款插件的Demo地址是[ 它使用js+flash实现,兼容所有浏览器。界面效果良好,支持批量上传、预览、进度条、删除等功能,非常适合用作图片上传控件。但它是定制型插件,只能修改颜色,样式固定,对于需要定制的需求可能不够灵活。
最后我要介绍的是 SWFUpload。我目前正在使用的就是这款插件。它的下载地址是[
```csharp
public class ThumbnailGenerator
{
///
/// 生成缩略图
///
/// 原图片
/// 缩略图宽度
/// 缩略图高度
/// 是否裁剪(以中心点)
///
public static Image GenerateThumbnail(System.Drawing.Image imgSource, int newWidth, int newHeight, bool isCut)
{
// 计算等比例缩放后的宽度和高度
int rWidth = (int)(imgSource.Width ((double)newWidth / imgSource.Width));
int rHeight = (int)(imgSource.Height ((double)newHeight / imgSource.Height));
Bitmap thumbnail = new Bitmap(rWidth, rHeight);
try
{
using (Graphics tGraphic = Graphics.FromImage(thumbnail))
{
tGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
// 绘制缩略图
tGraphic.DrawImage(imgSource, new Rectangle(0, 0, rWidth, rHeight));
}
if (isCut)
{
// 裁剪缩略图至指定尺寸
int xMove = (rWidth - newWidth) / 2;
int yMove = (rHeight - newHeight) / 2;
Bitmap finalImage = new Bitmap(newWidth, newHeight);
using (Graphics fGraphic = Graphics.FromImage(finalImage))
{
fGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
fGraphic.DrawImage(thumbnail, new Rectangle(0, 0, newWidth, newHeight), new Rectangle(xMove, yMove, newWidth, newHeight), GraphicsUnit.Pixel);
}
thumbnail.Dispose(); // 释放资源
return finalImage; // 返回裁剪后的缩略图
}
else // 不裁剪直接返回缩略图或原图(取决于原图比例是否小于缩略图尺寸)
{
if (rWidth <= newWidth && rHeight <= newHeight) // 如果原图比例小于缩略图尺寸,则返回缩略图;否则返回原图。保持原文逻辑不变。 return thumbnail; // 返回缩略图或原图(根据原图比例判断) } }
catch (Exception e)
当面临文件上传的问题时,我们有时会遇到各种挑战。无论是哪种情况,SWFUpload都会向我们发出提醒,告诉我们发生了什么问题。今天,让我们深入理解其中的几种常见错误及其背后的含义。
当看到弹出的提示框显示“上传文件超过限制(20M)!”时,我们知道遇到了文件大小限制的问题。这是SWFUpload为了防止服务器过载或网络拥堵而设置的一种保护措施。如果你尝试上传的文件超过了这一限制,就需要重新考虑如何减小文件大小或者选择较小的文件来上传。这时,不妨考虑一下是否可以通过压缩图片、减少视频质量或删除不必要的文件内容来减小文件大小。也要确保你的服务器配置能够支持更大的文件上传需求。
另一种常见的错误提示是“文件出现错误!”这一提示涵盖了多种情况,例如文件类型为无效或者文件大小为0(即零字节文件)。遇到这种问题时,首先要检查你选择的文件是否完整、格式是否正确。有时候,由于文件在下载或传输过程中损坏,可能会导致这种情况发生。请确保你的文件是完整且未损坏的版本。也要留意文件的扩展名是否正确,因为某些文件格式可能不被允许上传。如果以上都确认无误,那么可能需要进一步的技术支持来解决这个问题。
在Vs2010的广阔世界中,我们即将开启一段精彩的旅程。这是一个充满活力和创新的环境,让我们来构建一个令人惊叹的文件上传体验。
我们的故事从一份简单的HTML表单开始,它静静地躺在页面的中央,等待着用户的互动。这个表单包含了一个神秘的文本框,用户可以在这里输入他们的想法或内容。
在这个文本框的旁边,有一个上传图片的按钮区域。用户可以选择他们想要分享的图片,当这个选择完成时,我们的文件选择完成事件就会被触发。这个事件会显示出上传的图片列表,并显示一个加载动画,给用户一个上传中的视觉反馈。这个过程就像启动一个精彩的冒险旅程,用户正在准备他们的装备,准备踏上征程。
我们的上传过程是一个精细的舞蹈,每一步都有精细的控制和反馈。文件上传成功后,我们会在列表中添加成功上传的图片预览。如果用户在这个过程中遇到任何问题,我们会优雅地处理错误,并显示一个错误图片。我们还有一个进度条的处理方法,让用户可以实时了解上传进度。这个过程就像一场冒险旅程中的挑战和奖励,让用户充满期待和成就感。
当所有文件都上传完成后,我们会继续下一个文件的上传过程。这个过程就像一个永不停歇的旋转木马,带来无尽的乐趣和满足感。整个过程都融入了Vs2010的精髓,为我们提供了一个强大的工具和环境,让我们能够创造出令人惊叹的用户体验。
我们的表单还有一个“发表”按钮。当用户完成他们的输入和图片上传后,他们可以点击这个按钮来发布他们的内容。这个按钮就像冒险旅程的终点,用户带着他们的成果和故事来到这里,准备向世界展示他们的精彩内容。整个过程充满了乐趣和挑战,让用户充满期待和满足感。这就是我们在Vs2010中创造的精彩世界!
网络推广网站
- 模拟QQ心情图片上传预览示例
- PHP自定义函数获取汉字首字母的方法
- Node.js实现兼容IE789的文件上传进度条
- XSLT轻松入门第三章:XSLT的元素语法
- Vue中Quill富文本编辑器的使用教程
- PHP设计模式之责任链模式的深入解析
- vuejs实现本地数据的筛选分页功能思路详解
- jQuery中parentsUntil()方法用法实例
- php+xml结合Ajax实现点赞功能完整实例
- Vue 2.0中生命周期与钩子函数的一些理解
- PHP遍历目录文件的常用方法小结
- PHP unlink与rmdir删除目录及目录下所有文件实例代
- EJB3.0之实体Bean的继承
- JavaScipt中栈的实现方法
- javaScript日期工具类DateUtils详解
- 浅谈ES6新增的数组方法和对象