1. 程式人生 > >2、附件上傳到伺服器及附件資訊新增到資料庫

2、附件上傳到伺服器及附件資訊新增到資料庫

1、附件主表結構

CREATE TABLE [dbo].[Stm_Attach_Hd](
	[AttachmentKey] [INT] IDENTITY(1,1) NOT NULL,
	[AttachmentCode] [VARCHAR](200) NULL,
	[AttachmentName] [VARCHAR](200) NULL,
 CONSTRAINT [PK_Stm_Attachment] PRIMARY KEY CLUSTERED 
(
	[AttachmentKey] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

2、附件明細表結構
CREATE TABLE [dbo].[Stm_Attach_Dt](
	[AttachKey] [INT] IDENTITY(1,1) NOT NULL,
	[AttachmentKey] [INT] NULL,
	[ContentLength] [INT] NULL,
	[ContentType] [VARCHAR](500) NULL,
	[SourceFileName] [VARCHAR](500) NULL,
	[SourcePathName] [VARCHAR](500) NULL,
	[NewFileName] [VARCHAR](500) NULL,
	[NewPathName] [VARCHAR](500) NULL,
	[UserHostAddress] [VARCHAR](500) NULL,
	[UserHostName] [VARCHAR](500) NULL,
	[CreateTime] [DATETIME] NULL,
 CONSTRAINT [PK_Stm_Attach_Dt] PRIMARY KEY CLUSTERED 
(
	[AttachKey] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

3、附件上傳時儲存過程處理
USE [Hello]
GO
/****** Object:  StoredProcedure [dbo].[P_CreateAttachment]    Script Date: 07/11/2015 18:06:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[P_CreateAttachment](	
	@AttachmentKey INT,
	@ContentLength int,
	@ContentType varchar(20),
	@SourceFileName varchar(500),
	@SourcePathName varchar(500),
	@NewFileName varchar(500),
	@NewPathName varchar(500),
	@UserHostAddress varchar(500),
	@UserHostName  varchar(500)	
	)
AS
BEGIN
	DECLARE @AttachmentCode VARCHAR(200);
	DECLARE @AttachmentName VARCHAR(200);	
	
	IF @AttachmentKey<=0 
	BEGIN
	
	SET @AttachmentCode=CONVERT(varchar(100), GETDATE(), 21);
	SET @AttachmentName=CONVERT(varchar(100), GETDATE(), 21);
	INSERT INTO dbo.Stm_Attach_Hd
	        ( AttachmentCode, AttachmentName )
	VALUES  ( @AttachmentCode, @AttachmentName)  SET @
[email protected]
@IDENTITY; END; DECLARE @AttachKey INT; INSERT INTO dbo.Stm_Attach_Dt ( AttachmentKey , ContentLength , ContentType , SourceFileName , SourcePathName , NewFileName , NewPathName , UserHostAddress , UserHostName , CreateTime ) VALUES ( @AttachmentKey , @ContentLength, @ContentType, @SourceFileName, @SourcePathName, @NewFileName, @NewPathName, @UserHostAddress, @UserHostName, GETDATE() ) SET @[email protected]@IDENTITY; IF @AttachKey>0 RETURN @AttachmentKey; ELSE RETURN 0; END
4、列表頁面程式碼
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
    <link href="~/Content/Easyui/themes/default/easyui.css" rel="stylesheet" />
    <link href="~/Content/Easyui/themes/icon.css" rel="stylesheet" />
    <script src="~/Content/Easyui/jquery.min.js"></script>
    <script src="~/Content/Easyui/jquery.easyui.min.js"></script>
    <script src="~/Content/Easyui/easyui-lang-zh_CN.js"></script>
    <title></title>
    <script type="text/javascript" language="javascript">
        $(function () {
            $("#List").datagrid({
                fit: true,
                //pagination: true, //顯示分頁
                url: "/Attachment/PageQuery",
                toolbar: "#toolbar",
                rownumbers: true, //行號
                singleSelect: true, //單行選取
                columns: [[
                { field: 'AttachmentKey', title: 'AttachmentKey', checkbox: true, width: 100, align: 'center' },
                { field: 'AttachmentCode', title: 'AttachmentCode', width: 90, align: 'center' },
                { field: 'AttachmentName', title: 'AttachmentName', width: 90, align: 'center' }]]
            });
        });

        function Fn_ListCreate() {
            var getSelected = $("#List").datagrid("getSelected");
            if (getSelected) {
                var url = "/Attachment/Create?&rand=" + Math.random();
                var width = 600;
                var height = 380;
                $("#modalwindow").html("<iframe width='100%' height='99.3%' scrolling='no' frameborder='0'' src='" + url + "'></iframe>");
                $("#modalwindow").window({ title: '編輯附件', width: width, height: height }).window('open');
                $("#modalwindow").window("open");
            } else {
                var url = "/Attachment/Create?&rand=" + Math.random();
                var width = 600;
                var height = 380;
                $("#modalwindow").html("<iframe width='100%' height='99.3%' scrolling='no' frameborder='0'' src='" + url + "'></iframe>");
                $("#modalwindow").window({ title: '建立附件', width: width, height: height }).window('open');
                $("#modalwindow").window("open");
            }
        }

    </script>
</head>
<body>
    <div id="modalwindow" class="easyui-window" data-options="width: 720, height: 400,modal:true,minimizable:false,maximizable:false,closed:true,collapsible:false">
    </div>
    <table id="List"></table>
    <div id="toolbar">
        <a id="fn_add" href="javascript:void(0)" class="easyui-linkbutton" onclick="Fn_ListCreate()"
           data-options="iconCls:'icon-add',plain:false">建立編輯</a>

    </div>
</body>
</html>


列表頁面效果

5、附件管理

前臺程式碼

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
    <link href="~/Content/Easyui/themes/default/easyui.css" rel="stylesheet" />
    <link href="~/Content/Easyui/themes/icon.css" rel="stylesheet" />
    @*<script src="~/Content/Easyui/jquery.min.js"></script>*@
    <script src="~/Content/JQuery/jquery-1.8.2.js"></script>
    <script src="~/Content/Easyui/jquery.easyui.min.js"></script>
    <script src="~/Content/Easyui/easyui-lang-zh_CN.js"></script>
    <script src="~/Content/JQuery/jquery.form.js"></script>
    <script>
        var AttachmentKey;
        $(function () {
            $("#List").datagrid({
                fit: true,
                toolbar: "#toolbar",
                rownumbers: true, //行號
                singleSelect: true, //單行選取
                columns: [[
                { field: 'AttachKey', title: 'AttachKey', checkbox: true, width: 100, align: 'center' },
                { field: 'AttachmentKey', title: 'AttachmentKey', hidden: true, width: 100, align: 'center' },
                { field: 'ContentLength', title: '附件長度', width: 90, align: 'center' },
                { field: 'ContentType', title: '附件型別', width: 90, align: 'center' },
                { field: 'SourceFileName', title: '附件名稱', width: 90, align: 'center' },
                { field: 'NewPathName', title: '附件路徑', width: 90, align: 'center' }
                ]]
            });


            var getSelected = window.parent.$("#List").datagrid("getSelected");
            if (getSelected) {
                AttachmentKey = getSelected.AttachmentKey;
                $("#List").datagrid({
                    url: "/Attachment/QueryAttachmentDetail?AttachmentKey=" + AttachmentKey
                });
            } else {
                AttachmentKey = 0;
            }
        })

        function Fn_CreateAttachment() {
            if (document.getElementById("Files").value) {
                $("#ajaxForms").ajaxSubmit({
                    type: "POST",
                    url: "/Attachment/Fn_CreateAttachment?SaveModuleName=TestFile&AttachmentKey=" + AttachmentKey,
                    dataType: "text",
                    success: function (data) {
                        if (data > 0) {
                            $("#List").datagrid({
                                url: "/Attachment/QueryAttachmentDetail?AttachmentKey=" + data
                            });
                        } else {
                            alert("上傳失敗!");
                            return;
                        }
                    }
                });
            } else {
                alert("請選擇附件!");
                return;
            }
        }
        function Fn_DeleteAttachment() {
            var getSelected = $("#List").datagrid("getSelected");
            if (getSelected) {
                $.ajax({
                    contentType: "application/json;",
                    url: '/Attachment/Fn_DeleteAttachment?rand=' + Math.random(),
                    type: "POST",
                    dataType: "text", //可以為Json
                    data: JSON.stringify(getSelected),
                    success: function (result) {
                        if (result == "success") {
                            $("#List").datagrid("reload");
                        } else {
                            alert("移除附件失敗!");
                            return;
                        }
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("移除附件失敗");
                        return;
                    }
                });
            }
        }
    </script>
</head>
<body>
    <table id="List"></table>
    <div id="toolbar" style="padding-top:6px; padding-bottom:6px;">
        <form id="ajaxForms" enctype="multipart/form-data">
            <input id="Files" name="Files" type="file" class="file" />
            <input id="Button1" onclick="Fn_CreateAttachment()" type="button" value="上傳附件" />
            <input id="Button1" onclick="Fn_DeleteAttachment()" type="button" value="移除附件" />
        </form>
    </div>
</body>
</html>

MVC後臺程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using _2_Attachment_DataBse.Models;
using System.IO;
using System.Data.SqlClient;
using System.Data;

namespace _2_Attachment_DataBse.Controllers
{
    public class AttachmentController : Controller
    {
        HelloEntities hello = new HelloEntities();
        //
        // GET: /Attachment/
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Create()
        {
            return View();
        }


        public JsonResult PageQuery()
        {
            var data = hello.Stm_Attach_Hd.Where(a => true);
            var jsonResult = new { rows = data };
            return Json(jsonResult, JsonRequestBehavior.AllowGet);
        }

        public JsonResult QueryAttachmentDetail(int AttachmentKey)
        {
            var data = hello.Stm_Attach_Dt.Where(a => a.AttachmentKey == AttachmentKey).Select(a => new
            {
                a.AttachKey,
                a.AttachmentKey,
                a.ContentLength,
                a.ContentType,
                a.NewFileName,
                a.SourceFileName,
                a.SourcePathName,
                a.NewPathName
            });
            var jsonResult = new { rows = data };
            return Json(jsonResult, JsonRequestBehavior.AllowGet);
        }

        /// <summary>
        /// 上傳檔案
        /// 高友鑫
        /// 2015年7月11日 17:04:07
        /// </summary>
        /// <returns></returns>
        public int Fn_CreateAttachment()
        {
            HttpPostedFileBase files = Request.Files["Files"];
            string SourceFileName = files.FileName;
            int ContentLength = files.ContentLength;
            string ContentType = files.ContentType;

            string SaveModuleName = Request["SaveModuleName"].ToString();//檔案存放模組
            string SourceFilesPath = System.AppDomain.CurrentDomain.BaseDirectory + "Attachment\\" + SaveModuleName;//檔案存放路徑

            //判斷檔案存放模組是否存在
            if (Directory.Exists(SourceFilesPath) == false)
            {
                Directory.CreateDirectory(SourceFilesPath);
            }

            string fileType = SourceFileName.Substring(SourceFileName.LastIndexOf('.'));//檔案的型別
            string NewFileName = System.DateTime.Now.ToString("yyyymmddhhmmss") + fileType;//新檔名稱
            string NewPathName = "../Attachment/" + SaveModuleName + "/" + NewFileName;//新檔案路徑
            files.SaveAs(SourceFilesPath + "\\" + NewFileName);//上傳檔案

            //新增附件資訊到資料庫中
            int AttachmentKey = Request["AttachmentKey"] == null ? 0 : Convert.ToInt32(Request["AttachmentKey"]);
            int Result = hello.P_CreateAttachment(AttachmentKey, ContentLength, ContentType, SourceFileName, SourceFilesPath, NewFileName, NewPathName, Request.UserHostAddress, Request.UserHostName);
            return Result;
        }

        public ActionResult Fn_DeleteAttachment(Stm_Attach_Dt attach)
        {
            hello.Stm_Attach_Dt.Attach(attach);
            hello.Stm_Attach_Dt.Remove(attach);
            hello.SaveChanges();
            return Content("success");
        }


    }
}

附件管理頁面效果

6、例子下載

相關推薦

unity的WEBGL專案伺服器訪問操作

win7系統左下角搜尋裡面輸入mstsc命令 輸入伺服器IP地址進入 輸入伺服器賬號密碼進行登入 把檔案放入www資料夾下,必須有index檔案 訪問的時候http://www.imfuture.xyz/資料夾名字/index.html#/ 示例:http://ww

dedecms 5.7 sp1版 關於附件後,附件地址回撥失敗的BUG修復

在使用dedecms 5.7 sp1版 時,發現附件上傳後,回撥時會失敗,必須,重新選擇,才能呼叫到上傳的附件,當附件很多時,會很恐怖的。 經過對dedecms5.7的分析,發現是上傳時,沒有傳值導致的。 解決辦法: 1、include目錄下dialog下select_

2附件伺服器附件資訊新增資料庫

1、附件主表結構 CREATE TABLE [dbo].[Stm_Attach_Hd]( [AttachmentKey] [INT] IDENTITY(1,1) NOT NULL, [AttachmentCode] [VARCHAR](200) NULL, [At

Jfinal附件照片下載

Jfinal附件、照片上傳及下載 1、附件前臺 <div class="form-group"> <label class="col-sm-4 control-label no-padding-right" for="form-field-1">附件</labe

超大附件下載特別慢,怎麼破?

目前,已有不少郵箱如QQ郵箱、網易郵箱等支援超大附件,可以傳送2G或3G大小的檔案。但是諸多郵箱傳送超大附件普遍存在以下問題: 1、郵件傳送大檔案對檔案大小有限制,超過上限的超大附件無法傳送; 2、超大附件上傳、下載的速度有限,而且速度也不穩定; 3、即便上傳成功之後,如果對方的郵箱接收

IIS 設定伺服器最大附件

系統環境:win8 開發環境:asp.net mvc 功能:檔案上傳 在上傳檔案時,比較小的檔案會直接上傳成功,大的檔案頁面報錯:“檔案超過了最大請求長度”。 經過查明: 需要在配置檔案裡面設定檔案上傳限定的兩個屬性值:maxAllowedContentLength,maxRequestLength 允許

WordPress 實現附件自動重命名但不改變附件標題

function code 上傳媒體文件 通過 rand res prefilter erb 亂碼 WordPress 上傳媒體文件時,默認會保持文件名不變。如果上傳文件名中包含中文字符,則會造成部分瀏覽器顯示的文件 URL 疑似亂碼甚至無法訪問。網上流行較廣的是通過註冊

協同附件源代碼研究

前言 手寫 .com targe tle tac 臨時 獲取 數據 前言 由於項目中需要將將手寫簽批(北京點聚)生成的審批意見文件(.aip/.pdf)進行上傳,因此才在休息時間得以研究一下協同OA的公文管理中附件管理的上傳附件源代碼。ps源代碼封裝的著實很深,一路跟蹤,處

修改帝國CMS默認圖片附件路徑

load 默認 行修改 方法 需要 想要 成功 教程 左右 帝國CMS系統設置中的“附件地址”設置是不生效的,無論設置成什麽都還是在 d/file/ 下,下面牛教程介紹手動修改附件存放地址的方法。 一:先在系統設置中將“附件地址”一項修改為自己想要的地址,這裏以 /uplo

odoo開發筆記 -- 附件

.cn cnblogs 圖片 field nbsp view 9.png name div 附件上傳基本原理實現,可以參考這篇: https://www.cnblogs.com/ljwTiey/p/7348291.html http://blog.csdn.net/wa

uploadify附件

show mda message rev AC events div pre typeid 首先 在剛加載jsp時就加入上傳方法,所以 formDate 中的參數 zFileName是頁面剛加載時 exp1的值 ,後來通過js方法賦值不被讀過來,如果 你想要獲得這個值,可在

odoo 附件與下載

下載 附件 img _id OS com chm info bubuko 在想上傳附件的模型仲添加一個關聯字段 關聯模型:ir.attachment res_id 是附件模型的關聯字段,其他模型也可以直接這樣寫。 這樣就可以實現附件的上傳與下載 odoo 附件上

UEditor Golang圖片與附件

OS ola spa mic 分享 editor png 自己 pan UEditor圖片與附件上傳官方只支持ASP、ASP.NET、JSP、PHP四種語言版本,Golang就不在其中。因為自己開發系統的需要,我照著UEditor服務器端的接口自己實現了一個Golang版本

jmeter 在一個新增接口中包含附件功能

操作 鏈接 文件 單文件上傳 提取 自己的 style 做的 bsp 如下圖形式 分三步操作 1.先抓取附件上傳的數據 2.對上述請求做json提取名稱 (具體可根據實際數據提取,不要照抄下圖) 3.抓取保存的時候的數據,找到對應的文件名稱位置,用上面的json提

confluence文件附件預覽亂碼問題(linux服務器安裝字體操作)

serve 接下來 ati rwx inux 打開 預覽 字庫 這一 在confluence上傳excel文件,預覽時發現亂碼問題主要是因為再上傳文件的時候一般是Windows下的文件上傳,而預覽的時候,是linux下的環境,由於linux下沒有微軟字體,所以預覽的時候

springMVC和下載附件

eba adapter 其余 ati import oid sdf eth plain 上傳: 導入需要的jar包:Spring MVC類庫 + 文件上傳下載需要的JAR包,圖中A處為文件上傳下載需要的JAR包,其余為Spring MVC類庫。 構建領域模層

VUE Element ui附件

前端程式碼 上傳 </el-upload> </el-col> <el-col :span="4"> <el-button size="small" type="primary" @clic

springMvc多附件帶進度條

html頁面 <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <meta http-equiv="X-UA-Compatible" co

uni-app呼叫原生的檔案系統管理器(可選取附件

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="tex

vue+springboot和下載附件功能

上傳附件(服務端程式碼) 第一步:在application.yml中配置附件要上傳的路徑(此路徑也是下載的路徑) ***:windows路徑和linux的路徑是不同的,定義路徑時要仔細(存放路勁自己定義即可)       第二步:在服務端要呼叫介面所在的