Ajax上传图片文件到服务器

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploadByJs.aspx.cs" Inherits="WebApplication1.UI.FileUploadByJs" %>
 2
 3 <!DOCTYPE html>
 4
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 8     <title></title>
 9     <script type="text/javascript" src="../JS/jquery.min.js"></script>
10     <script type="text/javascript">
11         function Submit() {
12             var picPath = document.getElementById("imgFile").value;
13             if (picPath.trim() != "") {
14                 postFile(picPath);
15             }
16             else {
17                 alert("请先上传图片!");
18             }
19
20         }
21         //判断文件是否是图片
22         function SelectImg() {
23             var picPath = document.getElementById("imgFile").value;
24             if (picPath.trim() != "") {
25                 var fileSuffix = picPath.substring(picPath.lastIndexOf(‘.‘) + 1, picPath.length);
26                 if (fileSuffix.toLowerCase() != ‘jpg‘ && fileSuffix.toLowerCase() != ‘png‘) {
27                     alert("请上传图片文件!");
28                     return;
29                 }
30             }
31         }
32         //上传图片到服务器
33         function postFile(data) {
34             var d = {
35                 "imgUrl": data
36             }
37             $.ajax({
38                 url: "../AjaxHanlder/AjaxFileUploadHandler.ashx?action=FileUploadToServer",
39                 data: d,
40                 dataType: "JSON",
41                 async: false,
42                 success: function (msg) {
43                     if (msg != "上传出错!") {
44                         alert(msg);//返回图片路径
45                     }
46                     else {
47                         alert(msg);
48                     }
49                 },
50                 error: function () {
51                     alert("error");
52                 }
53             });
54         }
55     </script>
56 </head>
57 <body>
58     <form id="form1" runat="server">
59         选择要上传的图片:
60         <input type="file" name="file1" id="imgFile" onchange="SelectImg();" />
61         <br />
62         <input type="button" value="提交" id="submit" onclick="Submit();" />
63         <br />
64     </form>
65 </body>
66 </html>

前台

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Drawing;
 4 using System.Drawing.Imaging;
 5 using System.IO;
 6 using System.Linq;
 7 using System.Web;
 8
 9 namespace WebApplication1.AjaxHanlder
10 {
11     /// <summary>
12     /// AjaxFileUploadHandler 的摘要说明
13     /// </summary>
14     public class AjaxFileUploadHandler : IHttpHandler
15     {
16
17         public void ProcessRequest(HttpContext context)
18         {
19             context.Response.ContentType = "text/plain";
20             string action = context.Request.QueryString["action"];
21             switch (action)
22             {
23                 case "FileUploadToServer":
24                     FileUploadToServer(context);//上传图片到服务器
25                     break;
26                 default: break;
27             }
28         }
29
30         private void FileUploadToServer(HttpContext context)
31         {
32             string imgUrl = context.Request.QueryString["imgUrl"].ToString() + "";
33             try
34             {
35                 MemoryStream s = new MemoryStream();
36                 Bitmap bitmap = new Bitmap(imgUrl);
37                 bitmap.Save(s, ImageFormat.Jpeg);
38                 s.Seek(0, SeekOrigin.Begin);
39
40                 //Stream s = new BufferedStream(context.Request.InputStream);
41                 byte[] bytes = new byte[s.Length];
42                 s.Read(bytes, 0, bytes.Length);
43
44                 string name = Guid.NewGuid().ToString();
45                 string path = context.Server.MapPath("/uploads/" + name);
46                 File.WriteAllBytes(path, bytes);
47
48                 ///取到当前时间的年、月、日、分、秒和毫秒的值,并使用字符串格式把它们组合成一个字符串
49                 String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
50                     + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
51                     + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
52                     + DateTime.Now.Millisecond.ToString();
53                 ///在时间字符串后面添加一个随机数和文件的后缀名
54                 imgUrl = fileTime + GetRandomint() + Path.GetExtension(imgUrl);
55
56                 string pathNew = context.Server.MapPath("/uploads/" + imgUrl);
57
58                 if (File.Exists(path))
59                 {
60                     File.Copy(path, pathNew, false);
61                     File.Delete(path);
62                 }
63                 context.Response.Write(pathNew);//上传成功,返回路径
64             }
65             catch (Exception ex)
66             {
67                 context.Response.Write("上传出错!");
68             }
69         }
70
71         private String GetRandomint()
72         {
73             Random random = new Random();
74             return (random.Next(10000).ToString());    //产生一个小于10000的随机正整数
75         }
76
77         public bool IsReusable
78         {
79             get
80             {
81                 return false;
82             }
83         }
84     }
85 }

后台

时间: 2024-08-09 16:19:59

Ajax上传图片文件到服务器的相关文章

上传图片/文件到服务器

package yao.camera.util; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.gr

html+php上传图片文件到服务器

html+php上传图片文件到服务器 一.html代码 1 <body> 2 <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 3 <label>选择图片文件</label> 4 <input name="imgfile" type="

ajax上传图片文件

这里用的是一个隐藏的iframe,这样可以让form表单提交到这个iframe里面,用户就看不到页面的刷新了 前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题的.但是$.post直接上传图片是不可行的. 后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法也有利用flash的.flash确实是个好方法 但是不是每个人都会flash的而且下载下来现成的方法要做修改也不是件易事,且文件相对较大. 最后只好模拟iframe来实现.发现相当的简单.

[Ajax] 使用Ajax异步上传图片文件(非Form表单提交)

通过表单Form提交来上传文件的方式这里就不说了: 下面介绍,通过js中使用ajax异步上传图片文件: 新建一个html页面和一个一般处理程序即可: 涉及思路: //发送2次Ajax请求完成js异步上传文件的操作:          //第1次,post 只上传文件,返回文件名name          //第2次,get 根据文件名name定位服务器上的文件,同时根据浏览器传过来的realname重命名服务器上的文件          //(如果有其他参数,也可以通过第2次一并上传) 图片文件

C# WinForm 上传图片,文件到服务器的方法Uploader.ashx

网上有很多方案,起初用时,因为对asp.net不太了解,觉得FTP实现不错,可是后来发现,如果机器在域控下,就会有问题. 一年过去了,asp.net也熟悉了,知道ajax没事应该用ashx,验证码也用ashx,当然这里要说的WinForm上传也应该是ashx了吧,哈哈,先提供简单思路: 接收文件的asp.net是:Uploader.ashx,相关代码: view plaincopy to clipboardprint? <%@ WebHandler Language="C#" C

Android上传文件至服务器(转)

本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为androidUpload,目录结构如下: 2).新建FormFile类,用来封装文件信息 package com.ljq.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

kindeditor扩展粘贴图片功能&amp;修改图片上传路径并通过webapi上传图片到图片服务器

前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功能 kindeditor修改图片上传路径并通过webapi上传图片到图片服务器(支持分布式图片) 结果演示 1.扩展粘贴图片功能演示 2.修改图片上传路径演示: 我们的网站演示地址是:http://localhost:9393/ 我们的图片服务器地址是:http://localhost:9394/

Android上传图片(PHP服务器)

原理 Android客户端模拟一个HTTP的Post请求到服务器端,服务器端接收相应的Post请求后,返回响应信息给给客户端. PHP服务器 <?php move_uploaded_file($_FILES['file']['tmp_name'], "./upload/".$_FILES["file"]["name"]); ?> Android客户端 package com.example.uploadfile.app; import

C# 通过WebService方式 IIS发布网站 上传文件到服务器

应用场景:要将本地的文件 上传到服务器的虚拟机上 网络环境:公司局域网(如下图中第二种) 开发环境:VS2010 服务器环境:WinServer2008    虚拟机环境:WinServer2008 我的程序结构目录 AppSrvice 是服务文件 将来发布了以后要放到服务器上, WindowFormsAppp 是Winform程序 第一步: 创建一个新的: Windows窗体应用程序 using System;using System.Collections.Generic;using Sys