.net MVC中 在视图中上传的附件图片怎么保存到数据库

.net MVC中 在视图中上传的附件图片怎么保存到数据库,第1张

图片保存到数据库不是最佳的选择.

你可以搜索一下Uploadify 插件. 这个插件非常好用

一般将图片存为图片文件.

大致代码如下:

$("#btn_upload_attachment").uploadify({

height: 25,

swf: '../Scripts/plugin/uplodify/uploadify.swf',

uploader: '/Home/Upload',

queueSizeLimit: 1,

formData: { ID: newId },

buttonText: '选择文件',

width: 80,

onUploadSuccess: function (file, data, response) {

eval("data=" + data)

AddToAttachmentList(data.Data)

}

})

后台代码处理:

[AcceptVerbs(HttpVerbs.Post)]

public JsonResult Upload(HttpPostedFileBase fileData, Guid? ID)

{

if (fileData != null)

{

try

{

// 文件上传后的保存路径

var filePath = Path.Combine(ConfigurationManager.AppSettings["BusinessFiles"], Ticket.OrgId.ToString())

if (!Directory.Exists(filePath))

{

Directory.CreateDirectory(filePath)

}

var fileName = Path.GetFileName(fileData.FileName)// 原始文件名称

var fileExtension = Path.GetExtension(fileName)// 文件扩展名

var fileID = Guid.NewGuid()

var saveName = fileID.ToString() + fileExtension// 保存文件名称

fileData.SaveAs(filePath + "/" + saveName)

// 作为临时附件存入附件表

var attachments = new Attachments()

attachments.ID = fileID

attachments.OrgID = Ticket.OrgId

attachments.BusinessType = (byte)BusinessType.TransferContract

attachments.Status = (byte)AttachmentStatus.Temp

if (ID.HasValue)

{

attachments.BusinessID = ID.Value

}

attachments.Extension = fileExtension

attachments.Name = fileName

attachments.Size = fileData.ContentLength

attachments.UploadTime = GetNow()

attachments.UploadBy = Ticket.EmployeeName

attachments.UploadByID = Ticket.UserId

AttachmentsBLL.SaveAttachment(attachments)

return Json(new { Success = true, FileName = fileName, SaveName = saveName, FileID = fileID, Data = attachments })

}

catch (Exception ex)

{

return Json(new { Success = false, Message = ex.Message }, JsonRequestBehavior.AllowGet)

}

}

else

{

return Json(new { Success = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet)

}

}

文件上传基本思路

1. 在一个 html 网页中,写一个如下的form :

<form method=post encType=multipart/form-data action='xx'>

<input name="userfile1" type="file" ><br>

<input name="userfile2" type="file"><br>

<input name="userfile3" type="file"><br>

<input name="userfile4" type="file"><br>

text field :<input type="text" name="text" value="text"><br>

<input type="submit" value=" 提交 "><input type=reset>

<form>

2. 服务端 servelet 的编写

现在第三方的 http upload file 工具库很多。Jarkata 项目本身就提供了fileupload 包http://jakarta.apache.org/commons/fileupload/

。文件上传、表单项处理、效率问题基本上都考虑到了。在 struts 中就使用了这个包,不过是用 struts 的方式另行封装了一次。这里我们直接使用 fileupload 包。至于struts 中的用法,请参阅 struts 相关文档。

这个处理文件上传的 servelet 主要代码如下:

public void doPost( HttpServletRequest request, HttpServletResponse response ) {

DiskFileUpload diskFileUpload = new DiskFileUpload()

// 允许文件最大长度

diskFileUpload.setSizeMax( 100*1024*1024 )

// 设置内存缓冲大小

diskFileUpload.setSizeThreshold( 4096 )

// 设置临时目录

diskFileUpload.setRepositoryPath( "c:/tmp" )

List fileItems = diskFileUpload.parseRequest( request )

Iterator iter = fileItems.iterator()

for( iter.hasNext()) {

FileItem fileItem = (FileItem) iter.next()

if( fileItem.isFormField() ) {

// 当前是一个表单项

out.println( "form field : " + fileItem.getFieldName() + ", " + fileItem.getString() )

} else {

// 当前是一个上传的文件

String fileName = fileItem.getName()

fileItem.write( new File("c:/uploads/"+fileName) )

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6903659.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存