您的位置:首页 > 编程语言 > ASP

asp.net使用百度的webuploader批量上传图片

2015-07-20 10:45 627 查看
各位想必是在百度下载webuploader后,看官方的demo并没有看明白才搜到这里来的吧。

我也是,我将搜索的结果做了整理,大家互相学习进步。

下载下来的是一个php的写的,asp.net的服务器端得自己重新写一个服务,将下载的代码进行如下修改(这里使用的是demo中的examples/image-upload/upload.js):

找到154行,将图片上传地址修改为.net的一般处理程序的请求地址

server: '../../server/fileupload.php',

修改为您的一般处理程序地址

server: '../../server/fileupload.ashx',


好了,到这里我们将upload.js修改完成了,如果你要使用到自己的项目中,还需要修改

首先,找到109行的代码

var swf = './expressInstall.swf';


修改为您的flash地址:

var swf = '../image/expressInstall.swf';


其次,找到151行,在实例化的时候修改用于上传flash的地址:

swf: '../../dist/Uploader.swf',
修改为您的

swf: '../image/Uploader.swf',


最后,如果你有自己的预览的服务器,还需要修改代码地址(我没有写不影响文件上传)
$.ajax('../../server/preview.php', {


修改为您的一般处理程序的预览地址

$.ajax('./server/preview.ashx', {


下面就是写了处理程序了,在项目中server文件夹添加以下两个文件fileupload.ashx和preview.ashx。

下面主要介绍fileupload.ashx的实现方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;

namespace FileUpload.server
{
/// <summary>
/// Summary description for fileupload
/// </summary>
public class fileupload : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//指定字符集
context.Response.ContentEncoding = Encoding.UTF8;
if (context.Request["REQUEST_METHOD"] == "OPTIONS")
{
context.Response.End();
}
SaveFile();
}
/// <summary>
/// 文件保存操作
/// </summary>
/// <param name="basePath"></param>
private void SaveFile(string basePath = "~/Upload/Images/")
{
var name = string.Empty;
basePath = (basePath.IndexOf("~") > -1) ? System.Web.HttpContext.Current.Server.MapPath(basePath) : basePath;
HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
//如果目录不存在,则创建目录
if (!Directory.Exists(basePath))
{
Directory.CreateDirectory(basePath);
}

var suffix = files[0].ContentType.Split('/');
//获取文件格式
var _suffix = suffix[1].Equals("jpeg",StringComparison.CurrentCultureIgnoreCase) ? "" : suffix[1];
var _temp = System.Web.HttpContext.Current.Request["name"];
//如果不修改文件名,则创建随机文件名
if (!string.IsNullOrEmpty(_temp))
{
name = _temp;
}
else
{
Random rand = new Random(24 * (int)DateTime.Now.Ticks);
name = rand.Next() + "." + _suffix;
}
//文件保存
var full = basePath + name;
files[0].SaveAs(full);
var _result = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"" + name + "\"}";
System.Web.HttpContext.Current.Response.Write(_result);
}

public bool IsReusable
{
get
{
return false;
}
}
}
}
如有需求,需要修改一下上传位置和上传文件保存文件名等个人设置。

如有问题,请留言交流。

tip:private void SaveFile(string basePath = "~/Upload/Images/")这句代码应该只有.net4.0才支持。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息