松鼠的博客

导航

文件上传下载(C#,web,asp.net)

目的:在浏览器页面启动上传下载CS软件,实现文件的批量下载与上传。

技术路线:

开发上传下载客户端CS程序与注册程序,压缩放到服务器端指定位置;

开发服务器端程序用以接收上传请求,压缩放到服务器端;

将数据服务端程序与客户端程序压缩包用IIS发布

开发前端页面,提供下载上传下载程序压缩包的功能,提供打开上传下载程序的功能;

内容:

1、上传下载CS客户端程序

采用C#开发语言开发,wpf界面,webclient等接口,http协议,实现数据的上传下载功能,实现文件记录写入后台数据库mysql中。 exe

2、注册程序(参考某博客资料)

采用C#开发语言,win32的相关注册表操作接口,实现上传下载程序写入注册表,以便前端页面调用 。 exe

3、文件上传后台程序

采用asp.net 技术,IIS,接收上传下载客户端程序的文件上传请求,实现服务器端文件的保存,以及照片缩略图的生成与保存。 axpx

4、前端页面功能入口

采用easyUI技术,javascript技术,实现上传下载程序的下载以及调用。html

=======================================================================

1、html页面启动功能

 

 

2、启动客户端程序

 

 

3、下载

 

 

 

4、上传

 

 

 

=====================================================================

1、上传下载CS客户端程序

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YpGlobalWPF;
using YpGlobalWPF.Dialog;

namespace UpDownLoadApp
{
class StartUpApp
{
[STAThread]
public static void Main(string[] args)
{
//string[] s = { "yupontuploadapp://192.168.120.200_guangzhou_root_root_http://192.168.120.200/Data_http://192.168.120.200/uploadFileServer/Default.aspx" };
//args = s;
if (args.Length<1)
{
return;
}
ParseExePara(args);
App app = new App();
app.InitializeComponent();
app.Run();
return;
}

public static void ParseExePara(string[] args)
{
if (args.Length<1)
{
return;
}
string paraRemoved = "yupontuploadapp://";
string para = args[0];
para = para.Replace(paraRemoved, "").Trim();
if (!string.IsNullOrWhiteSpace(para)&&para.Length>0)
{
string[] allParas=para.Split('_');
if (allParas.Length<4)
{
return;
}
YpGlobalWPF.CommonUtil.Para = new CommonUtils.MySqlConnPara()
{
Host = allParas[0],
DataBase = allParas[1],
UserName = allParas[2],
Password = allParas[3]
};
if (allParas.Length>4)
{
YpGlobalWPF.CommonUtil.CesiumDataBaseUrl = allParas[4];
string upLoadFilePathRelative;
if (allParas[4].Contains("127.0.0.1"))
{
upLoadFilePathRelative = YBCommonUtility.StringUtility.GetAfterRemovePreStr(allParas[4], "127.0.0.1");
}
else if (allParas[4].Contains("localhost"))
{
upLoadFilePathRelative = YBCommonUtility.StringUtility.GetAfterRemovePreStr(allParas[4], "localhost");
}
else
{
upLoadFilePathRelative = YBCommonUtility.StringUtility.GetAfterRemovePreStr(allParas[4], YpGlobalWPF.CommonUtil.Para.Host);
}
YpGlobalWPF.CommonUtil.UpLoadDataDirRelative = upLoadFilePathRelative;
YpGlobalWPF.CommonUtil.SourceFilePath = allParas[4]+"/images/原始数据";
YpGlobalWPF.CommonUtil.FaultFilePath = allParas[4] + "/images/缺陷数据";
}
if (allParas.Length>5)
{
YpGlobalWPF.CommonUtil.ServerAspx = allParas[5];
}
}
}
}
}

 

 

//using DbDAL;
//using DbModel;
using System;
using System.Collections.Generic;
//using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using YpGlobalWPF.Common;
using System.ComponentModel;
using System.Threading;
namespace YpGlobalWPF.Dialog
{
/// <summary>
/// frmLineProfile.xaml 的交互逻辑
/// </summary>
public partial class frmPictureTreeDownFile : Window,INotifyPropertyChanged
{
private IDictionary<string, string> _pictures;
private bool _bMaximized = false;

private string _lineName="";

private string _poleName="";

private string _baseUrl = "";
public string PoleName
{
get { return _poleName; }
set
{
_poleName = value;
LinePoleName = _lineName + _poleName;
RaisePropertyChanged("PoleName");
}
}

private string linePoleName;

public string LinePoleName
{
get { return linePoleName; }
set
{
linePoleName = value;
RaisePropertyChanged("LinePoleName");
}
}

private static frmPictureTreeDownFile picTree1;

public static frmPictureTreeDownFile Instance
{
get
{
if (picTree1 == null)
{
picTree1 = new frmPictureTreeDownFile(null);
}
return picTree1;
}
set
{
picTree1 = value;
}

}

public frmPictureTreeDownFile(IDictionary<string, string> pics)
{
InitializeComponent();
_pictures = pics;
//
double scale = CommonUtil.ScaleValue;
//this.Width = 950 * scale;
//this.Height = 700 * scale;
}

public bool Init(string baseUrl,string lineName,string poleName)
{
try
{
this._lineName = lineName;
this.PoleName = poleName;
this._baseUrl = baseUrl;
ViewModel.VM_PicTreeDownFile picTreeViewModel = new ViewModel.VM_PicTreeDownFile();
picTreeViewModel.LoadDataOnCommand(baseUrl, true, true);
if (picTreeViewModel.Children == null || picTreeViewModel.Children.Count == 0 )
{
CommonUtil.ShowMessage("提示", "没找到照片!");
return false;
}
frmPictureTreeDownFile.Instance.picTree.DataContext = picTreeViewModel;

List<NameValueItem> cmbLineSource = picTreeViewModel.GetCmbLines();
cmbLineSource.Insert(0,new NameValueItem("全部","全部"));
frmPictureTreeDownFile.Instance.cmbLines.ItemsSource = cmbLineSource;
frmPictureTreeDownFile.Instance.cmbLines.SelectedValue = lineName;
frmPictureTreeDownFile.Instance.cmbLines_SelectionChanged(null, null);

FillCmbPoles(lineName, poleName, picTreeViewModel);


}
catch (Exception)
{
CommonUtil.ShowMessage("提示", "打开杆塔照片出错!");
return false;
}

return true;
}

private void FillCmbPoles(string lineName,string poleName,ViewModel.VM_PicTreeDownFile picTreeViewModel)
{
List<NameValueItem> cmbPoleSource = picTreeViewModel.GetLinePoles(lineName);
if (cmbPoleSource==null)
{
return;
}
cmbPoleSource.Insert(0, new NameValueItem("全部", "全部"));
frmPictureTreeDownFile.Instance.cmbPoles.ItemsSource = cmbPoleSource;
if (poleName==null)
{
frmPictureTreeDownFile.Instance.cmbPoles.SelectedIndex = 0;
return;
}
else
{
if (cmbPoleSource.Count>1)
{
if (cmbPoleSource[1].Value.ToString().EndsWith("#"))
{
poleName = poleName.Replace("号", "#");
if (!poleName.EndsWith("#"))
{
poleName += "#";
}
}
if (cmbPoleSource[1].Value.ToString().EndsWith("号"))
{
poleName = poleName.Replace("#", "号");
if (!poleName.EndsWith("号"))
{
poleName += "号";
}
}

}
frmPictureTreeDownFile.Instance.cmbPoles.SelectedValue = poleName;
}
frmPictureTreeDownFile.Instance.cmbPoles_SelectionChanged(null, null);
}

private void OK_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Hidden;
}

private bool _bMouseDown;
private System.Windows.Point _startPoint;
private void Gripe_MouseDown(object sender, MouseButtonEventArgs e)
{
_bMouseDown = true;
_startPoint = e.GetPosition(this);
sizeGripe.CaptureMouse();
this.Cursor = Cursors.SizeAll;
}

private void Gripe_MouseMove(object sender, MouseEventArgs e)
{
if (_bMouseDown)
{
System.Windows.Point endPos = e.GetPosition(this);
this.Width = this.Width + (endPos.X - _startPoint.X);
this.Height = this.Height + (endPos.Y - _startPoint.Y);
_startPoint = endPos;
}
}

private void Gripe_MouseUp(object sender, MouseButtonEventArgs e)
{
_bMouseDown = false;
sizeGripe.ReleaseMouseCapture();
this.Cursor = Cursors.Arrow;
}

private TextBlock curSelectedItme = null;

private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//ViewModel.VM_PicTree treeItem = (sender as TextBlock).Tag as ViewModel.VM_PicTree;
curSelectedItme = sender as TextBlock;//
}

public event PropertyChangedEventHandler PropertyChanged;

private void RaisePropertyChanged(string propName)
{
if (PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{

}

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{

}

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
this.Visibility = Visibility.Hidden;
}

private void btnDownFile_Click(object sender, RoutedEventArgs e)
{
ViewModel.VM_PicTreeDownFile vmTree = (ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext;
if (!Directory.Exists(this.txtSavePath.Text.Trim()))
{
CommonUtil.ShowMessage("错误", "保存目录设置错误!");
txtSavePath.Text = "";
txtSavePath.Focus();
return;
}
this.waitP.Visibility = Visibility.Visible;
System.Windows.Forms.Application.DoEvents();
Thread newThread = new Thread(
new ParameterizedThreadStart(down));
Tuple<ViewModel.VM_PicTreeDownFile, string> tt = new Tuple<ViewModel.VM_PicTreeDownFile, string>(vmTree, this.txtSavePath.Text.Trim());

newThread.IsBackground = true;
newThread.Start(tt);

//vmTree.DownFile(vmTree,this.txtSavePath.Text.Trim());

}

private void down(Object para1)
{
Tuple<ViewModel.VM_PicTreeDownFile, string> para = para1 as Tuple<ViewModel.VM_PicTreeDownFile, string>;
para.Item1.DownFile(para.Item1, para.Item2);
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
this.waitP.Visibility = Visibility.Collapsed;
CommonUtil.ShowMessage("提示", "数据下载完成!");
}));
}

private void formCaption_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
_bMaximized = !_bMaximized;
if (_bMaximized)
{
this.WindowState = System.Windows.WindowState.Maximized;
}
else
{
this.WindowState = System.Windows.WindowState.Normal;
}
}

private void formCaption_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
this.DragMove();
}
}

private void cmbLines_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cmbLines.SelectedValue==null)
{
return;
}
string lineName = cmbLines.SelectedValue.ToString();
((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).SearchTree(lineName, this._baseUrl);
FillCmbPoles(lineName, null, (ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext);
}

private void btnselpath_Click(object sender, RoutedEventArgs e)
{
string fullFilePath = string.Empty;
System.Windows.Forms.FolderBrowserDialog dilog = new System.Windows.Forms.FolderBrowserDialog();
dilog.Description = "请选择文件夹";
if (dilog.ShowDialog() == System.Windows.Forms.DialogResult.OK || dilog.ShowDialog() == System.Windows.Forms.DialogResult.Yes)
{
fullFilePath = dilog.SelectedPath;
}
txtSavePath.Text = fullFilePath;
}

private void cmbPoles_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cmbPoles.SelectedValue == null)
{
return;
}
if (((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).Children[0].Children.Count == 0)
{
return;
}
//int lineNameIndex = -1;
string poleName = cmbPoles.SelectedValue.ToString();
string lineName = cmbLines.SelectedValue.ToString();
//((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).GetLineNameIndex((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext, _lineName, ref lineNameIndex);//获取线路名称的索引
//if (lineNameIndex > 0)
//{
// ((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).SearchTreePoles(lineNameIndex + (_baseUrl.Equals(CommonUtil.PolePicturePath) ? 2 : 1), poleName,_baseUrl);
//}
if(((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).Children.Count==0)
{
return;
}
((ViewModel.VM_PicTreeDownFile)frmPictureTreeDownFile.Instance.picTree.DataContext).SearchTreePoles2(lineName, poleName, _baseUrl);
}


}

}

 


using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace UpDownLoadApp.View
{
/// <summary>
/// UploadFile.xaml 的交互逻辑
/// </summary>
public partial class frmUploadFile : Window
{
string _currentPath = "";//选择的要上传的文件夹路径
private bool _bMouseDown;
private System.Windows.Point _startPoint;
private bool _bMaximized = false;
private int _removeRecordIndex = 0;
private ObservableCollection<Model.LogModel> _AllLog = new ObservableCollection<Model.LogModel>();
private ObservableCollection<Model.LogModel> _curAllLog = new ObservableCollection<Model.LogModel>();

public frmUploadFile()
{
InitializeComponent();
InitCmb();
this.lstLog.ItemsSource = _curAllLog;
}

private static frmUploadFile picTree1;

public static frmUploadFile Instance
{
get
{
if (picTree1 == null)
{
picTree1 = new frmUploadFile();
}
return picTree1;
}
set
{
picTree1 = value;
}

}

private void InitCmb()
{
this.cmbDataType.ItemsSource = Enum.GetNames(typeof(Model.enumDataType));
if (this.cmbDataType.Items!=null&&this.cmbDataType.Items.Count>0)
{
this.cmbDataType.SelectedIndex = 0;
}
if (cmbDataType.SelectedIndex == 0)
{
this.cmbDataLevel.ItemsSource = Enum.GetNames(typeof(Model.enumSourceFileLevelType));
}
else
{
this.cmbDataLevel.ItemsSource = Enum.GetNames(typeof(Model.enumFaultFileLevelType));
}
if (this.cmbDataLevel.Items != null && this.cmbDataLevel.Items.Count > 0)
{
this.cmbDataLevel.SelectedIndex = 0;
}
this.cmbDataType.SelectionChanged += (s, e) =>
{
if (cmbDataType.SelectedIndex==0)
{
this.cmbDataLevel.ItemsSource = Enum.GetNames(typeof(Model.enumSourceFileLevelType));
}
else
{
this.cmbDataLevel.ItemsSource = Enum.GetNames(typeof(Model.enumFaultFileLevelType));
}
if (this.cmbDataLevel.Items!=null&&this.cmbDataLevel.Items.Count>0)
{
this.cmbDataLevel.SelectedIndex = 0;
}
};
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{

}

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{

}

private void formCaption_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
_bMaximized = !_bMaximized;
if (_bMaximized)
{
this.WindowState = System.Windows.WindowState.Maximized;
}
else
{
this.WindowState = System.Windows.WindowState.Normal;
}
}

private void formCaption_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
this.DragMove();
}
}

private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{

}

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
this.Visibility = Visibility.Hidden;
}

private void Gripe_MouseDown(object sender, MouseButtonEventArgs e)
{
_bMouseDown = true;
_startPoint = e.GetPosition(this);
sizeGripe.CaptureMouse();
this.Cursor = Cursors.SizeAll;
}

private void Gripe_MouseMove(object sender, MouseEventArgs e)
{
if (_bMouseDown)
{
System.Windows.Point endPos = e.GetPosition(this);
this.Width = this.Width + (endPos.X - _startPoint.X);
this.Height = this.Height + (endPos.Y - _startPoint.Y);
_startPoint = endPos;
}
}

private void Gripe_MouseUp(object sender, MouseButtonEventArgs e)
{
_bMouseDown = false;
sizeGripe.ReleaseMouseCapture();
this.Cursor = Cursors.Arrow;
}

/// <summary>
/// 上传
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDownFile_Click(object sender, RoutedEventArgs e)
{
_removeRecordIndex = 0;
chkAllLog.IsChecked = true;
_curAllLog.Clear();
_AllLog.Clear();
string serverAspx = YpGlobalWPF.CommonUtil.ServerAspx;//服务器端网页
ViewModel.UpLoadFile upLoadFile = new ViewModel.UpLoadFile(ViewModel.UpLoadFile.GetDataBaseType(_currentPath));
upLoadFile.proBarEvent += updataH_ProcessChanged;
upLoadFile.LogMessageEvent += upLoadFile_LogMessageEvent;
upLoadFile.UpLoadDir(_currentPath,serverAspx);
}


void upLoadFile_LogMessageEvent(string log)
{
_AllLog.Add(new Model.LogModel { Message = log });
if (_AllLog.Count>100)
{
if(_AllLog[_removeRecordIndex].Message.Contains("失败"))
{
_AllLog.RemoveAt(_removeRecordIndex);
}
else
{
if (_removeRecordIndex<_AllLog.Count-1)
{
_removeRecordIndex++;
}
}
}
if (_AllLog.Count>200)
{
_AllLog.RemoveAt(0);
}
_curAllLog.Clear();
foreach (var item in _AllLog)
{
_curAllLog.Add(item);
}
System.Windows.Forms.Application.DoEvents();
}

void updataH_ProcessChanged(int TotalCount, int curCount)
{
this.proBar.Value = (int)Math.Round((double)(curCount * 100) / TotalCount, 2);
System.Windows.Forms.Application.DoEvents();
if (curCount >= TotalCount)
{
MessageBox.Show("上传完成!");
}
}

private void btnselpath_Click(object sender, RoutedEventArgs e)
{
try
{
string fullFilePath = string.Empty;
System.Windows.Forms.FolderBrowserDialog dilog = new System.Windows.Forms.FolderBrowserDialog();
dilog.Description = "请选择文件夹";
dilog.SelectedPath = _currentPath;
System.Windows.Forms.DialogResult dlgResult = dilog.ShowDialog();
if (dlgResult == System.Windows.Forms.DialogResult.OK || dlgResult == System.Windows.Forms.DialogResult.Yes)
{
fullFilePath = dilog.SelectedPath;
this.txtInputPath.Text = fullFilePath;
_currentPath = dilog.SelectedPath;
ReSetCmb(fullFilePath);
}
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString());
}
}

private void ReSetCmb(string filefPath)
{
string type = ViewModel.UpLoadFile.GetDataBaseType(filefPath);
string levelType = ViewModel.UpLoadFile.GetFileLevelType(filefPath);
if (type.Equals(Model.enumDataType.原始数据.ToString()))
{
this.cmbDataType.SelectedIndex = 0;
}
else if (type.Equals(Model.enumDataType.缺陷数据.ToString()))
{
this.cmbDataType.SelectedIndex = 1;
}
this.cmbDataLevel.SelectedItem = levelType;
}

private void OK_Click(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Hidden;
}

private void chkAllLog_Checked(object sender, RoutedEventArgs e)
{
_curAllLog.Clear();
foreach (var item in _AllLog)
{
_curAllLog.Add(item);
}
}

private void chkSucceLog_Checked(object sender, RoutedEventArgs e)
{
IEnumerable<Model.LogModel> a = _AllLog.Where(t => t.Message.Contains("成功"));
_curAllLog.Clear();
foreach (var item in a)
{
_curAllLog.Add(item);
}
}

private void chkFailLog_Checked(object sender, RoutedEventArgs e)
{
IEnumerable<Model.LogModel> a = _AllLog.Where(t => t.Message.Contains("失败"));
_curAllLog.Clear();
foreach (var item in a)
{
_curAllLog.Add(item);
}
}

}
}


2、注册程序

 

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

namespace RegisterUpLoadApp
{
class Program
{
public const string KEYNAME = "yupontuploadapp";
public const string EXENAME = "UpDownLoadApp.exe";
static void Main(string[] args)
{
string regeditExePath=System.AppDomain.CurrentDomain.BaseDirectory;
regeditExePath = System.IO.Path.Combine(regeditExePath, @"UpLoadClient\");
RegeditManager.InstallerDemo_AfterUninstall(KEYNAME, regeditExePath);
RegeditManager.InstallerDemo_AfterInstall(regeditExePath, EXENAME, KEYNAME);
Console.ReadKey();
}
}
}

 


using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace RegisterUpLoadApp
{
public class RegeditManager
{

/// <summary>
// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void InstallerDemo_AfterInstall(string targetdirPath, string exeName,string regeditKeyName)
{
Msg("文件路径:" + Path.Combine(targetdirPath, exeName), targetdirPath);
var result = RegeditAdd(regeditKeyName, Path.Combine(targetdirPath, exeName), "");
Msg("注册表修改是否成功:" + result, targetdirPath);
}
/// <summary>
/// 卸载完成之后触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void InstallerDemo_AfterUninstall(string keyName,string targetPaht)
{
//throw new NotImplementedException();
Msg("注册表信息删除开始:", targetPaht);
var result = RegeditDelete(keyName, targetPaht);
Msg("注册表信息删除:" + result, targetPaht);
}
/// <summary>
/// 注册协议
/// </summary>
/// <param name="Root_Key">根节点</param>
/// <param name="file_application_path">应用程序路径</param>
/// <param name="file_application_ico">应用程序打开图标,可选值</param>
/// <returns></returns>
public static bool RegeditAdd(string Root_Key, string file_application_path, string file_application_ico)
{
RegistryKey reg_ClassRoot = Registry.ClassesRoot;
string targetdirPath="";
try
{
targetdirPath = System.IO.Path.GetDirectoryName(file_application_path);
RegistryKey reg_key = reg_ClassRoot.OpenSubKey(Root_Key, true);
if (reg_key == null)
{
//创建子节点HKEY_CLASSES_ROOT\tpswftest
RegistryKey reg_sjbs = reg_ClassRoot.CreateSubKey(Root_Key);
//添加默认项
reg_sjbs.SetValue("", "URL: " + Root_Key + " Protocol Handler");
//协议别名
reg_sjbs.SetValue("URL Protocol", file_application_path);
//创建[HKEY_CLASSES_ROOT\tpswftest\DefaultIcon]
RegistryKey reg_DefaultIcon = reg_sjbs.CreateSubKey("DefaultIcon");
if (!String.IsNullOrEmpty(file_application_ico))
{
//设置自定义图标
reg_DefaultIcon.SetValue("", file_application_ico);
}
else
{
//设置系统定义图标
reg_DefaultIcon.SetValue("", file_application_path + ",1");
}
//创建呼出处理程序[HKEY_CLASSES_ROOT\tpswftest\shell\open\command]
RegistryKey reg_command = reg_sjbs.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("command");
//%1 表示传递的参数,再次%1表示调用处显示链接文本
reg_command.SetValue("", "\"" + file_application_path + "\" \"%1\"");
}
return true;
}
catch (Exception ex)
{
Msg(ex.Message.ToString(), targetdirPath);
return false;
}
finally { reg_ClassRoot.Close(); }
}

/// <summary>
/// 删除协议
/// </summary>
/// <param name="Root_Key">根节点</param>
/// <returns></returns>
public static bool RegeditDelete(string Root_Key,string targetPaht)
{
//获取注册表HKEY_CLASSES_ROOT
RegistryKey reg_ClassRoot = Registry.ClassesRoot;
try
{
//获取注册表[HKEY_CLASSES_ROOT\tpswftest]项
RegistryKey reg_sjbs = reg_ClassRoot.OpenSubKey(Root_Key, true);
if (reg_sjbs != null)
{
reg_ClassRoot.DeleteSubKeyTree(Root_Key);
return true;
}
else
{
//Msg("注册表中" + reg_ClassRoot + "\\" + Root_Key + "不存在!", "");
return false;
}

}
catch (Exception ex)
{
//添加错误日志
Msg(ex.Message.ToString(), "");
return false;
}
finally { reg_ClassRoot.Close(); }
}
/// <summary>
/// 日志
/// </summary>
/// <param name="message"></param>
public static void Msg(string message,string targetdirPath)
{
string rootPath = targetdirPath;
if (string.IsNullOrEmpty(rootPath))
{
rootPath = "D:\\runsoft\\meswfTest";
}
try
{

Console.WriteLine(message);
}
catch (Exception _exception)
{
throw;
}
}
}
}


3、文件上传后台程序

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
namespace UpDownLoadFileServer
{
/// <summary>
/// 文件上传服务端
/// </summary>
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
foreach (string f in Request.Files.AllKeys)
{
try
{
HttpPostedFile file = Request.Files[f];
string relativePath = Request.QueryString["relativePath"];
string webSiteName = Request.QueryString["webSiteName"];
//webSiteName = "jixunzhongxinCesium/cloud/";
string serverLocalFilePath = Server.MapPath("../" + webSiteName + "/" + relativePath);
string filePathName = Path.GetDirectoryName(serverLocalFilePath);
Directory.CreateDirectory(filePathName);
file.SaveAs(serverLocalFilePath);
SaveThumb(serverLocalFilePath);
}
catch (Exception)
{

}
}
}

public static void SaveThumb(string serverLocalFilePath)
{
try
{
string newPath = serverLocalFilePath.Replace("缺陷数据", "缺陷数据缩略图").Replace("原始数据", "原始数据缩略图");
string filePathName = Path.GetDirectoryName(newPath);
Directory.CreateDirectory(filePathName);
WebImgUtil.ImageUtil.MakeThumbnail(serverLocalFilePath, newPath, 500, 500, "HW");
}
catch (Exception)
{
}

}
}
}


4、前端页面功能入口

 

<div id="uploadpanel" class="easyui-window" title="数据传输" data-options="closable:true,collapsible:false,minimizable:false,closed:true" style="width:300px;height:180px; padding-top: 30px">
<div style="text-align: center">
<button id="btnloaduploadexe">程序注册</button>
<p></p>
<a id="aupload" style="font-size: 14px" href="yupontuploadapp://host_db_user_pass_images_aspx">
启动程序
</a>
<p></p>
<p></p>
<p>说明:第一次使用上传下载程序需要先注册</p>
</div>
</div>

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/18/%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%ef%bc%88c%ef%bc%8cweb%ef%bc%8casp-net%ef%bc%89/

欢迎入群一起讨论

 

 

posted on 2023-12-18 11:44  Xproer-松鼠  阅读(31)  评论(0编辑  收藏  举报