更新组件:Bootstrap-fileinput组件升级,后台代码更新完善头像上传功能
This commit is contained in:
parent
d41dd53e68
commit
6cb3d39f78
|
@ -1,9 +1,12 @@
|
||||||
using Bootstrap.DataAccess;
|
using Bootstrap.DataAccess;
|
||||||
using Longbow.Logging;
|
using Longbow.Logging;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Specialized;
|
using System.Collections.Specialized;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Bootstrap.Admin.Controllers.Api
|
namespace Bootstrap.Admin.Controllers.Api
|
||||||
{
|
{
|
||||||
|
@ -14,34 +17,51 @@ namespace Bootstrap.Admin.Controllers.Api
|
||||||
public class ProfilesController : Controller
|
public class ProfilesController : Controller
|
||||||
{
|
{
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public string Post()
|
public async Task<JsonResult> Post([FromServices]IHostingEnvironment env, IFormCollection files)
|
||||||
{
|
{
|
||||||
var ret = string.Empty;
|
var previewUrl = string.Empty;
|
||||||
|
long fileSize = 0;
|
||||||
var userName = User.Identity.Name;
|
var userName = User.Identity.Name;
|
||||||
|
var error = string.Empty;
|
||||||
if (User.IsInRole("Administrators")) userName = "default";
|
if (User.IsInRole("Administrators")) userName = "default";
|
||||||
//var files = HttpContext.Request.Files;
|
if (files.Count > 0)
|
||||||
//if (files.Count > 0)
|
{
|
||||||
//{
|
var uploadFile = files.Files[0];
|
||||||
// var webSiteUrl = DictHelper.RetrieveIconFolderPath().Code;
|
var webSiteUrl = DictHelper.RetrieveIconFolderPath().Code;
|
||||||
// var fileName = string.Format("{0}{1}", userName, Path.GetExtension(files[0].FileName));
|
var fileName = string.Format("{0}{1}", userName, Path.GetExtension(uploadFile.FileName));
|
||||||
// var fileUrl = string.Format("{0}{1}", webSiteUrl, fileName);
|
var fileUrl = string.Format("{0}{1}", webSiteUrl, fileName);
|
||||||
// var filePath = HttpContext.Current.Server.MapPath(fileUrl);
|
var filePath = Path.Combine(env.WebRootPath, webSiteUrl.Replace("~", string.Empty).Replace("/", "\\").TrimStart('\\') + fileName);
|
||||||
// var fileFolder = Path.GetDirectoryName(filePath);
|
var fileFolder = Path.GetDirectoryName(filePath);
|
||||||
// try
|
fileSize = uploadFile.Length;
|
||||||
// {
|
try
|
||||||
// if (!Directory.Exists(fileFolder)) Directory.CreateDirectory(fileFolder);
|
{
|
||||||
// files[0].SaveAs(filePath);
|
if (!Directory.Exists(fileFolder)) Directory.CreateDirectory(fileFolder);
|
||||||
// ret = string.Format("{0}?q={1}", Url.Content(fileUrl), DateTime.Now.Ticks);
|
using (var fs = new FileStream(filePath, FileMode.Create))
|
||||||
// UserHelper.SaveUserIconByName(userName, fileName);
|
{
|
||||||
// }
|
await uploadFile.CopyToAsync(fs);
|
||||||
// catch (Exception ex)
|
}
|
||||||
// {
|
previewUrl = string.Format("{0}?q={1}", Url.Content(fileUrl), DateTime.Now.Ticks);
|
||||||
// var nv = new NameValueCollection();
|
UserHelper.SaveUserIconByName(userName, fileName);
|
||||||
// nv.Add("UpLoadFileName", filePath);
|
}
|
||||||
// ExceptionManager.Publish(ex, nv);
|
catch (Exception ex)
|
||||||
// }
|
{
|
||||||
//}
|
var nv = new NameValueCollection
|
||||||
return ret;
|
{
|
||||||
|
{ "UpLoadFileName", filePath }
|
||||||
|
};
|
||||||
|
error = ex.Message;
|
||||||
|
ExceptionManager.Publish(ex, nv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new JsonResult(new
|
||||||
|
{
|
||||||
|
error = string.IsNullOrEmpty(error) ? error : $"服务器端错误-{error}",
|
||||||
|
initialPreview = new string[] { previewUrl },
|
||||||
|
initialPreviewConfig = new object[] {
|
||||||
|
new { caption= "新头像", size= fileSize, showZoom= true }
|
||||||
|
},
|
||||||
|
append = false
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,23 +1,128 @@
|
||||||
/*!
|
/*!
|
||||||
* bootstrap-fileinput v4.3.6
|
* bootstrap-fileinput v4.4.9
|
||||||
* http://plugins.krajee.com/file-input
|
* http://plugins.krajee.com/file-input
|
||||||
*
|
*
|
||||||
|
* Krajee default styling for bootstrap-fileinput.
|
||||||
|
*
|
||||||
* Author: Kartik Visweswaran
|
* Author: Kartik Visweswaran
|
||||||
* Copyright: 2014 - 2016, Kartik Visweswaran, Krajee.com
|
* Copyright: 2014 - 2018, Kartik Visweswaran, Krajee.com
|
||||||
*
|
*
|
||||||
* Licensed under the BSD 3-Clause
|
* Licensed under the BSD 3-Clause
|
||||||
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
|
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
|
||||||
*/
|
*/
|
||||||
.file-loading {
|
.file-loading input[type=file], input[type=file].file-loading {
|
||||||
top: 0;
|
width: 0;
|
||||||
right: 0;
|
height: 0;
|
||||||
width: 25px;
|
}
|
||||||
height: 25px;
|
|
||||||
font-size: 999px;
|
.file-no-browse {
|
||||||
text-align: right;
|
position: absolute;
|
||||||
color: #fff;
|
left: 50%;
|
||||||
background: transparent url('../images/loading.gif') top left no-repeat;
|
bottom: 20%;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
font-size: 0;
|
||||||
|
opacity: 0;
|
||||||
border: none;
|
border: none;
|
||||||
|
background: none;
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kv-hidden, .file-caption-icon, .file-zoom-dialog .modal-header:before, .file-zoom-dialog .modal-header:after, .file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file, .file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button, .file-input-new .no-browse .input-group-btn, .file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button, .file-input-ajax-new .no-browse .input-group-btn, .hide-content .kv-file-content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-file input[type=file], .file-caption-icon, .file-preview .fileinput-remove, .krajee-default .file-thumb-progress, .file-zoom-dialog .btn-navigate, .file-zoom-dialog .floating-buttons {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-input, .file-loading:before, .btn-file, .file-caption, .file-preview, .krajee-default.file-preview-frame, .krajee-default .file-thumbnail-footer, .file-zoom-dialog .modal-dialog {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-error-message pre, .file-error-message ul, .krajee-default .file-actions, .krajee-default .file-other-error {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-error-message pre, .file-error-message ul {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default .file-drag-handle, .krajee-default .file-upload-indicator {
|
||||||
|
float: left;
|
||||||
|
margin: 5px 0 -5px;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default .file-thumb-progress .progress, .krajee-default .file-thumb-progress .progress-bar {
|
||||||
|
height: 11px;
|
||||||
|
font-size: 9px;
|
||||||
|
line-height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default .file-caption-info, .krajee-default .file-size-info {
|
||||||
|
display: block;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 160px;
|
||||||
|
height: 15px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash, .file-zoom-content > .file-object.type-image {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content > .file-object.type-pdf, .file-zoom-content > .file-object.type-html, .file-zoom-content > .file-object.type-text, .file-zoom-content > .file-object.type-default {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-2 {
|
||||||
|
transform: rotateY(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-3 {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-4 {
|
||||||
|
transform: rotate(180deg) rotateY(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-5 {
|
||||||
|
transform: rotate(270deg) rotateY(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-6 {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-7 {
|
||||||
|
transform: rotate(90deg) rotateY(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rotate-8 {
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-loading:before {
|
||||||
|
content: " Loading...";
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 20px;
|
||||||
|
line-height: 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-variant: small-caps;
|
||||||
|
color: #999;
|
||||||
|
background: transparent url(../img/loading.gif) top left no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-object {
|
.file-object {
|
||||||
|
@ -26,14 +131,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-file {
|
.btn-file {
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-file input[type=file] {
|
.btn-file input[type=file] {
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
left: 0;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
@ -43,19 +146,32 @@
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-caption-name {
|
.btn-file ::-ms-browse {
|
||||||
|
font-size: 10000px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-caption .file-caption-name {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-caption.icon-visible .file-caption-icon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
overflow: hidden;
|
|
||||||
height: 20px;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-group-lg .file-caption-name {
|
.file-caption.icon-visible .file-caption-name {
|
||||||
height: 25px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-dialog {
|
.file-caption-icon {
|
||||||
text-align: left;
|
left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-error-message {
|
.file-error-message {
|
||||||
|
@ -67,17 +183,12 @@
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-error-message pre, .file-error-message ul {
|
|
||||||
margin: 0;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-error-message pre {
|
.file-error-message pre {
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-caption-disabled {
|
.file-caption-disabled {
|
||||||
background-color: #EEEEEE;
|
background-color: #eee;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
@ -85,34 +196,56 @@
|
||||||
.file-preview {
|
.file-preview {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
padding: 5px;
|
padding: 8px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-frame {
|
.file-preview .btn-xs {
|
||||||
position: relative;
|
padding: 1px 5px;
|
||||||
display: table;
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-preview .fileinput-remove {
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
line-height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-preview .clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-preview-image {
|
||||||
|
font: 40px Impact, Charcoal, sans-serif;
|
||||||
|
color: #008000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default.file-preview-frame {
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
height: 160px;
|
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
box-shadow: 1px 1px 5px 0 #a2958a;
|
box-shadow: 1px 1px 5px 0 #a2958a;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
float: left;
|
float: left;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-frame:not(.file-preview-error):hover {
|
.krajee-default.file-preview-frame .kv-file-content {
|
||||||
|
width: 213px;
|
||||||
|
height: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default.file-preview-frame .file-thumbnail-footer {
|
||||||
|
height: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default.file-preview-frame:not(.file-preview-error):hover {
|
||||||
box-shadow: 3px 3px 5px 0 #333;
|
box-shadow: 3px 3px 5px 0 #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-image {
|
.krajee-default .file-preview-text {
|
||||||
vertical-align: middle;
|
|
||||||
image-orientation: from-image;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-preview-text {
|
|
||||||
display: block;
|
display: block;
|
||||||
color: #428bca;
|
color: #428bca;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
|
@ -122,208 +255,83 @@
|
||||||
resize: none;
|
resize: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-html {
|
.krajee-default .file-preview-html {
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-dialog .file-preview-text {
|
.krajee-default .file-other-icon {
|
||||||
font-size: 1.2em;
|
font-size: 6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-other {
|
.krajee-default .file-footer-buttons {
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: middle;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-preview-other:hover {
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-actions, .file-other-error {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-other-icon {
|
|
||||||
font-size: 4.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* noinspection CssOverwrittenProperties */
|
|
||||||
.file-zoom-dialog .file-other-icon {
|
|
||||||
font-size: 8em;
|
|
||||||
font-size: 55vmin;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file,
|
|
||||||
.file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button,
|
|
||||||
.file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-caption-main {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-input-ajax-new .no-browse .input-group-btn,
|
|
||||||
.file-input-new .no-browse .input-group-btn {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-input-ajax-new .no-browse .form-control,
|
|
||||||
.file-input-new .no-browse .form-control {
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-thumb-loading {
|
|
||||||
background: transparent url('../images/loading.gif') no-repeat scroll center center content-box !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-actions {
|
|
||||||
margin-top: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-footer-buttons {
|
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-upload-indicator {
|
.krajee-default .file-footer-caption {
|
||||||
display: inline;
|
|
||||||
cursor: default;
|
|
||||||
opacity: 0.8;
|
|
||||||
width: 60%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-upload-indicator:hover {
|
|
||||||
font-weight: bold;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-footer-caption {
|
|
||||||
display: block;
|
display: block;
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
width: 160px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 4px;
|
padding-top: 4px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: #777;
|
color: #777;
|
||||||
margin: 5px auto;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-error {
|
.krajee-default .file-preview-error {
|
||||||
opacity: 0.65;
|
opacity: 0.65;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
|
.krajee-default .file-thumb-progress {
|
||||||
|
height: 11px;
|
||||||
|
top: 37px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default.kvsortable-ghost {
|
||||||
|
background: #e1edf7;
|
||||||
|
border: 2px solid #a1abff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default .file-preview-other:hover {
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drop-zone {
|
.kv-upload-progress .progress {
|
||||||
border: 1px dashed #aaa;
|
height: 20px;
|
||||||
border-radius: 4px;
|
line-height: 20px;
|
||||||
height: 100%;
|
margin: 10px 0;
|
||||||
text-align: center;
|
overflow: hidden;
|
||||||
vertical-align: middle;
|
|
||||||
margin: 12px 15px 12px 12px;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drop-zone-title {
|
.kv-upload-progress .progress-bar {
|
||||||
color: #aaa;
|
height: 20px;
|
||||||
font-size: 1.6em;
|
line-height: 20px;
|
||||||
padding: 85px 10px;
|
|
||||||
cursor: default;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview .clickable,
|
/*noinspection CssOverwrittenProperties*/
|
||||||
.clickable .file-drop-zone-title {
|
.file-zoom-dialog .file-other-icon {
|
||||||
cursor: pointer;
|
font-size: 22em;
|
||||||
|
font-size: 50vmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drop-zone.clickable:hover {
|
.file-zoom-dialog .modal-dialog {
|
||||||
border: 2px dashed #999;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drop-zone.clickable:focus {
|
.file-zoom-dialog .modal-header {
|
||||||
border: 2px solid #5acde2;
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
.file-drop-zone .file-preview-thumbnails {
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-highlighted {
|
|
||||||
border: 2px dashed #999 !important;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-uploading {
|
|
||||||
background: url('../images/loading-sm.gif') no-repeat center bottom 10px;
|
|
||||||
opacity: 0.65;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-thumb-progress {
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-thumb-progress .progress, .file-thumb-progress .progress-bar {
|
|
||||||
height: 10px;
|
|
||||||
font-size: 9px;
|
|
||||||
line-height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-thumbnail-footer {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-thumb-progress {
|
|
||||||
position: absolute;
|
|
||||||
top: 35px;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-fullscreen.modal {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-fullscreen .modal-dialog {
|
|
||||||
position: fixed;
|
|
||||||
margin: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-fullscreen .modal-content {
|
|
||||||
border-radius: 0;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-fullscreen .modal-body {
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-dialog .modal-body {
|
|
||||||
position: relative !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-dialog .btn-navigate {
|
.file-zoom-dialog .btn-navigate {
|
||||||
position: absolute;
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
@ -335,26 +343,15 @@
|
||||||
color: #1c94c4;
|
color: #1c94c4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-dialog .floating-buttons {
|
.file-zoom-dialog .btn-navigate:not([disabled]):hover {
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.floating-buttons, .floating-buttons .btn {
|
|
||||||
z-index: 3000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-dialog .kv-zoom-actions .btn,
|
|
||||||
.floating-buttons .btn {
|
|
||||||
margin-left: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-zoom-dialog .btn-navigate:not([disabled]):hover,
|
|
||||||
.file-zoom-dialog .btn-navigate:not([disabled]):focus {
|
|
||||||
outline: none;
|
outline: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
opacity: 0.5;
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-dialog .floating-buttons {
|
||||||
|
top: 5px;
|
||||||
|
right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-dialog .btn-navigate[disabled] {
|
.file-zoom-dialog .btn-navigate[disabled] {
|
||||||
|
@ -369,16 +366,118 @@
|
||||||
right: 1px;
|
right: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drag-handle {
|
.file-zoom-dialog .kv-zoom-title {
|
||||||
display: inline;
|
font-weight: 300;
|
||||||
margin-right: 2px;
|
color: #999;
|
||||||
font-size: 16px;
|
max-width: 50%;
|
||||||
cursor: move;
|
overflow: hidden;
|
||||||
cursor: -webkit-grabbing;
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-drag-handle:hover {
|
.file-input-new .no-browse .form-control {
|
||||||
opacity: 0.7;
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-input-ajax-new .no-browse .form-control {
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-caption-main {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-thumb-loading {
|
||||||
|
background: transparent url(../img/loading.gif) no-repeat scroll center center content-box !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-drop-zone {
|
||||||
|
border: 1px dashed #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 100%;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin: 12px 15px 12px 12px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-drop-zone.clickable:hover {
|
||||||
|
border: 2px dashed #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-drop-zone.clickable:focus {
|
||||||
|
border: 2px solid #5acde2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-drop-zone .file-preview-thumbnails {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-drop-zone-title {
|
||||||
|
color: #aaa;
|
||||||
|
font-size: 1.6em;
|
||||||
|
padding: 85px 10px;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-highlighted {
|
||||||
|
border: 2px dashed #999 !important;
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-uploading {
|
||||||
|
background: url(../img/loading-sm.gif) no-repeat center bottom 10px;
|
||||||
|
opacity: 0.65;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 576px) {
|
||||||
|
.file-zoom-dialog .modal-dialog {
|
||||||
|
max-width: 500px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 992px) {
|
||||||
|
.file-zoom-dialog .modal-lg {
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-fullscreen.modal {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-fullscreen .modal-dialog {
|
||||||
|
position: fixed;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-fullscreen .modal-content {
|
||||||
|
border-radius: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-fullscreen .modal-body {
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-buttons {
|
||||||
|
z-index: 3000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-buttons .btn-kv {
|
||||||
|
margin-left: 3px;
|
||||||
|
z-index: 3000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-zoom-content {
|
.file-zoom-content {
|
||||||
|
@ -386,16 +485,70 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.file-zoom-content .file-preview-image {
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content .file-preview-video {
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content .is-portrait-gt4 {
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content > .file-object.type-image {
|
||||||
|
height: auto;
|
||||||
|
min-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-content > .file-object.type-audio {
|
||||||
|
width: auto;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.file-preview-thumbnails {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-zoom-dialog .modal-header {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 350px) {
|
||||||
|
.krajee-default.file-preview-frame .kv-file-content {
|
||||||
|
width: 160px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-loading[dir=rtl]:before {
|
||||||
|
background: transparent url(../img/loading.gif) top right no-repeat;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-sortable .file-drag-handle {
|
||||||
|
cursor: move;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-sortable .file-drag-handle:hover {
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clickable .file-drop-zone-title {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kv-zoom-actions .btn-kv {
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
.file-preview-initial.sortable-chosen {
|
.file-preview-initial.sortable-chosen {
|
||||||
background-color: #d9edf7;
|
background-color: #d9edf7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.file-preview-frame.sortable-ghost {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE 10 fix */
|
|
||||||
.btn-file ::-ms-browse {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
|
@ -2,7 +2,8 @@
|
||||||
var $headerIcon = $('#headerIcon');
|
var $headerIcon = $('#headerIcon');
|
||||||
var preIcon = $headerIcon.attr('src');
|
var preIcon = $headerIcon.attr('src');
|
||||||
$('#fileIcon').fileinput({
|
$('#fileIcon').fileinput({
|
||||||
uploadUrl: Profiles.url,
|
uploadUrl: $.formatUrl(Profiles.url),
|
||||||
|
browseOnZoneClick: true,
|
||||||
language: 'zh',
|
language: 'zh',
|
||||||
maxFileSize: 5000,
|
maxFileSize: 5000,
|
||||||
allowedFileExtensions: ['jpg', 'png', 'bmp', 'gif', 'jpeg'],
|
allowedFileExtensions: ['jpg', 'png', 'bmp', 'gif', 'jpeg'],
|
||||||
|
@ -10,13 +11,13 @@
|
||||||
preIcon
|
preIcon
|
||||||
],
|
],
|
||||||
initialPreviewConfig: [
|
initialPreviewConfig: [
|
||||||
{ caption: "现在头像", size: $('#fileIcon').attr('data-init'), showZoom: false },
|
{ caption: "现在头像", size: $('#fileIcon').attr('data-init'), showZoom: true },
|
||||||
],
|
],
|
||||||
initialPreviewAsData: true,
|
initialPreviewAsData: true,
|
||||||
overwriteInitial: true,
|
overwriteInitial: true,
|
||||||
dropZoneTitle: "请选择头像"
|
dropZoneTitle: "请选择头像"
|
||||||
}).on('fileuploaded', function (event, data, previewId, index) {
|
}).on('fileuploaded', function (event, data, previewId, index) {
|
||||||
var url = data.response;
|
var url = data.response.initialPreview[0];
|
||||||
if (!!url) $headerIcon.attr('src', url);
|
if (!!url) $headerIcon.attr('src', url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -60,5 +61,4 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('button[data-admin="False"]').removeAttr('disabled');
|
$('button[data-admin="False"]').removeAttr('disabled');
|
||||||
$('#kvFileinputModal').appendTo('body');
|
|
||||||
});
|
});
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -23,10 +23,12 @@
|
||||||
uploadLabel: '上传',
|
uploadLabel: '上传',
|
||||||
uploadTitle: '上传选中文件',
|
uploadTitle: '上传选中文件',
|
||||||
msgNo: '没有',
|
msgNo: '没有',
|
||||||
msgNoFilesSelected: '',
|
msgNoFilesSelected: '未选择文件',
|
||||||
msgCancelled: '取消',
|
msgCancelled: '取消',
|
||||||
|
msgPlaceholder: '选择 {files}...',
|
||||||
msgZoomModalHeading: '详细预览',
|
msgZoomModalHeading: '详细预览',
|
||||||
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
|
msgFileRequired: '必须选择一个文件上传.',
|
||||||
|
msgSizeTooSmall: '文件 "{name}" (<b>{size} KB</b>) 必须大于限定大小 <b>{minSize} KB</b>.',
|
||||||
msgSizeTooLarge: '文件 "{name}" (<b>{size} KB</b>) 超过了允许大小 <b>{maxSize} KB</b>.',
|
msgSizeTooLarge: '文件 "{name}" (<b>{size} KB</b>) 超过了允许大小 <b>{maxSize} KB</b>.',
|
||||||
msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
|
msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
|
||||||
msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
|
msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
|
||||||
|
@ -35,27 +37,50 @@
|
||||||
msgFileNotReadable: '文件 "{name}" 不可读.',
|
msgFileNotReadable: '文件 "{name}" 不可读.',
|
||||||
msgFilePreviewAborted: '取消 "{name}" 的预览.',
|
msgFilePreviewAborted: '取消 "{name}" 的预览.',
|
||||||
msgFilePreviewError: '读取 "{name}" 时出现了一个错误.',
|
msgFilePreviewError: '读取 "{name}" 时出现了一个错误.',
|
||||||
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
|
msgInvalidFileName: '文件名 "{name}" 包含非法字符.',
|
||||||
msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',
|
msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',
|
||||||
msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',
|
msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',
|
||||||
|
msgFileTypes: {
|
||||||
|
'image': 'image',
|
||||||
|
'html': 'HTML',
|
||||||
|
'text': 'text',
|
||||||
|
'video': 'video',
|
||||||
|
'audio': 'audio',
|
||||||
|
'flash': 'flash',
|
||||||
|
'pdf': 'PDF',
|
||||||
|
'object': 'object'
|
||||||
|
},
|
||||||
msgUploadAborted: '该文件上传被中止',
|
msgUploadAborted: '该文件上传被中止',
|
||||||
msgUploadThreshold: 'Processing...',
|
msgUploadThreshold: '处理中...',
|
||||||
|
msgUploadBegin: '正在初始化...',
|
||||||
|
msgUploadEnd: '完成',
|
||||||
|
msgUploadEmpty: '无效的文件上传.',
|
||||||
|
msgUploadError: '上传出错',
|
||||||
msgValidationError: '验证错误',
|
msgValidationError: '验证错误',
|
||||||
msgLoading: '加载第 {index} 文件 共 {files} …',
|
msgLoading: '加载第 {index} 文件 共 {files} …',
|
||||||
msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',
|
msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',
|
||||||
msgSelected: '{n} {files} 选中',
|
msgSelected: '{n} {files} 选中',
|
||||||
msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.',
|
msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.',
|
||||||
msgImageWidthSmall: '宽度的图像文件的"{name}"的必须是至少{size}像素.',
|
msgImageWidthSmall: '图像文件的"{name}"的宽度必须是至少{size}像素.',
|
||||||
msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.',
|
msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.',
|
||||||
msgImageWidthLarge: '宽度的图像文件"{name}"不能超过{size}像素.',
|
msgImageWidthLarge: '图像文件"{name}"的宽度不能超过{size}像素.',
|
||||||
msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.',
|
msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.',
|
||||||
msgImageResizeError: '无法获取的图像尺寸调整。',
|
msgImageResizeError: '无法获取的图像尺寸调整。',
|
||||||
msgImageResizeException: '错误而调整图像大小。<pre>{errors}</pre>',
|
msgImageResizeException: '调整图像大小时发生错误。<pre>{errors}</pre>',
|
||||||
|
msgAjaxError: '{operation} 发生错误. 请重试!',
|
||||||
|
msgAjaxProgressError: '{operation} 失败',
|
||||||
|
ajaxOperations: {
|
||||||
|
deleteThumb: '删除文件',
|
||||||
|
uploadThumb: '上传文件',
|
||||||
|
uploadBatch: '批量上传',
|
||||||
|
uploadExtra: '表单数据上传'
|
||||||
|
},
|
||||||
dropZoneTitle: '拖拽文件到这里 …<br>支持多文件同时上传',
|
dropZoneTitle: '拖拽文件到这里 …<br>支持多文件同时上传',
|
||||||
dropZoneClickTitle: '<br>(或点击{files}按钮选择文件)',
|
dropZoneClickTitle: '<br>(或点击{files}按钮选择文件)',
|
||||||
fileActionSettings: {
|
fileActionSettings: {
|
||||||
removeTitle: '删除文件',
|
removeTitle: '删除文件',
|
||||||
uploadTitle: '上传文件',
|
uploadTitle: '上传文件',
|
||||||
|
uploadRetryTitle: '重试',
|
||||||
zoomTitle: '查看详情',
|
zoomTitle: '查看详情',
|
||||||
dragTitle: '移动 / 重置',
|
dragTitle: '移动 / 重置',
|
||||||
indicatorNewTitle: '没有上传',
|
indicatorNewTitle: '没有上传',
|
||||||
|
|
Loading…
Reference in New Issue