将文件上传到网络共享服务器的方法

1,在文件服务器上,创建一个本地帐户,比如登录名:upload,密码:upload,注意在创建的时候选择“密码永不过期”,去掉勾选“用户下次登录时须更改密码”的选项;
2,在要共享的文件夹上点右键,选择“属性”-“安全”,增加upload帐户可以写入的权限;
3,在要共享的文件夹上点右键,选择“共享”,共享此文件夹,并在“权限”按钮点击后添加帐户upload可修改;
4,在另外一台 Web 服务器上,创建登录名和密码与上面完全相同的本地帐户。
5,在web.config里,启用模拟:      

web.config里添加的代码
< identity impersonate ="true" userName ="upload" password ="upload" />

6,在网站文件夹和Temporary ASP.NET Files文件夹上设置帐户upload读写权限
7,在ASP.NET的上传文件里写:

C# 代码
protected void Button1_Click( object sender, EventArgs e)
{
  
string fileName = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
  FileUpload1.SaveAs(
@" //192.168.3.1/free/ " + fileName);
}

8,显示上传的文件:
在IIS里创建虚拟目录,指向“另一台计算机上的共享”,“连接为”输入上面创建的帐户名和密码。即可以http://www.mengxianhui.com/upload/hello.jpg进行访问。

注意: 在VS里面直接运行可能会报告
Could not load file or assembly 'WebApplication1' or one of its dependencies. 拒绝访问。
这是因为你模拟的帐户没有权限导致的,你可以发布到IIS看效果。

 下面是一段使用程序进行模拟的方法,出自 http://2leggedspider.wordpress.com/2007/05/28/upload-files-to-unc-share-using-asp-net/ :

C# 代码

using System.Security.Principal;
using System.Runtime.InteropServices;

namespace FileUploadUNCShare
{
    
public partial class _Default : System.Web.UI.Page
    {

        
public const int LOGON32_LOGON_INTERACTIVE = 2 ;
        
public const int LOGON32_PROVIDER_DEFAULT = 0 ;

        WindowsImpersonationContext impersonationContext;

        [DllImport(
" advapi32.dll " )]
        
public static extern int LogonUserA(String lpszUserName,
            String lpszDomain,
            String lpszPassword,
            
int dwLogonType,
            
int dwLogonProvider,
            
ref IntPtr phToken);
        [DllImport(
" advapi32.dll " , CharSet = CharSet.Auto, SetLastError = true )]
        
public static extern int DuplicateToken(IntPtr hToken,
            
int impersonationLevel,
            
ref IntPtr hNewToken);

        [DllImport(
" advapi32.dll " , CharSet = CharSet.Auto, SetLastError = true )]
        
public static extern bool RevertToSelf();

        [DllImport(
" kernel32.dll " , CharSet = CharSet.Auto)]
        
public static extern bool CloseHandle(IntPtr handle);

        
private bool ImpersonateUser(String userName, String domain, String password)
        {
            WindowsIdentity tempWindowsIdentity;
            IntPtr token
= IntPtr.Zero;
            IntPtr tokenDuplicate
= IntPtr.Zero;

            
if (RevertToSelf())
            {
                
if (LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
                    LOGON32_PROVIDER_DEFAULT,
ref token) != 0 )
                {
                    
if (DuplicateToken(token, 2 , ref tokenDuplicate) != 0 )
                    {
                        tempWindowsIdentity
= new WindowsIdentity(tokenDuplicate);
                        impersonationContext
= tempWindowsIdentity.Impersonate();
                        
if (impersonationContext != null )
                        {
                            CloseHandle(token);
                            CloseHandle(tokenDuplicate);
                            
return true ;
                        }
                    }
                }
            }
            
if (token != IntPtr.Zero)
                CloseHandle(token);
            
if (tokenDuplicate != IntPtr.Zero)
                CloseHandle(tokenDuplicate);
            
return false ;
        }

        
private void UndoImpersonation()
        {
            impersonationContext.Undo();
        }

        
protected void Page_Load( object sender, EventArgs e)
        {

        }

        
protected void Button1_Click( object sender, EventArgs e)
        {
            
if (ImpersonateUser( " upload " , "" , " upload " ))
            {

                
if ((FileUpload1.PostedFile != null ) && (FileUpload1.PostedFile.ContentLength & gt; 0 ))
                {
                    
string fileName = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
                    
string folderPath = @" //MyUNCShare/MyFolder/ " ;

                    
string locationToSave = folderPath + " // " + fileName;
                    
try
                    {
                        FileUpload1.PostedFile.SaveAs(locationToSave);
                        Response.Write(
" The file has been uploaded. " );
                    }
                    
catch (Exception ex)
                    {
                        Response.Write(
" Error: " + ex.Message);
                    }
                }
                
else
                {
                    Response.Write(
" Please select a file to upload. " );
                }

                UndoImpersonation();
            }
            
else
            {
                Response.Write(
" Failed " );
            }

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HFS(HTTP File Server)是一款简单易用的网络文件服务器工具。它基于HTTP协议,可以将本地计算机上的文件共享给其他用户通过网络访问和下载。HFS具有以下特点和功能: 1. 简单易用:HFS拥有友好的用户界面和直观的操作流程,即使对于非技术人员也能轻松上手使用。只需在本地计算机上安装并运行HFS,即可通过浏览器访问和管理文件。 2. 快速稳定:HFS采用的是轻量级的HTTP服务器,其设计初衷是为了提供快速、可靠的文件共享服务。相比其他文件服务器工具,HFS在文件传输和访问速度方面具有明显优势。 3. 安全性:HFS支持基本的用户认证和权限控制。管理员可以设置访问密码,并指定不同用户的访问权限,确保文件只能被授权用户访问。 4. 多种访问方式:HFS支持多种访问方式,包括浏览器访问、FTP访问和文件夹映射等。用户可以根据自己的需求选择最合适的访问方式进行文件的上传、下载和管理。 5. 自定义性:HFS提供了各种自定义设置选项,用户可以根据自己的需求对文件服务器进行个性化配置。可以设置默认主页、添加自定义页面、更改界面样式等。 总之,HFS是一款功能强大、易用性高的网络文件服务器工具。它为用户提供了方便快捷的文件共享和访问方式,并保证了传输的安全性和稳定性。无论是个人用户还是小型团队,都可以通过HFS轻松实现文件的在线共享和管理。 ### 回答2: HFS(HTTP File Server)是一种网络文件服务器工具,它允许用户通过浏览器访问和下载文件。这个工具使用简单,并且不需要进行复杂的服务器设置。 HFS支持常见的文件操作,包括建立文件夹、上传文件、删除文件和重命名文件等等。用户可以将目标文件夹设为根目录,从而共享根目录下的所有文件和文件夹,或者将其设为独立的文件夹,实现特定文件的共享。 该工具的一个重要功能是权限设置。通过设置用户名和密码,用户可以限制对特定文件或文件夹的访问。这对于私人分享文件或公司内部使用非常有用。此外,HFS还支持IP白名单和黑名单,以进一步限制对服务器的访问。 另一个HFS的特点是支持虚拟文件系统。这意味着用户可以将文件夹映射为虚拟文件系统,并向用户提供一个统一的界面,从而方便了文件的管理和访问。 HFS还提供了一些附加功能,如日志记录和限制下载速度。日志记录功能可以帮助用户跟踪对服务器的访问情况,而限制下载速度可以避免服务器过载或网络拥塞的问题。 总之,HFS是一款简单实用的网络文件服务器工具,无论是个人用户还是企业用户,都可以通过它轻松地搭建一个文件共享平台。它的易用性、权限设置和虚拟文件系统功能,使得文件的管理和访问变得更加便捷和安全。 ### 回答3: HFS(Http File Server)是一款简单易用的网络文件服务器工具。它基于HTTP协议,可以在局域网或互联网上快速地进行文件共享。 使用HFS可以通过浏览器访问远程的文件和文件夹,并且可以进行上传、下载和管理文件的操作。它支持多种文件类型的在线预览,比如文本文件、图片、音频和视频等。 HFS具有以下几个特点: 1. 轻量级:HFS的安装包非常小巧,运行起来占用系统资源很少,可以在低配置的计算机上快速运行。 2. 安全性:HFS具有身份验证和权限设置功能,可以限制特定用户或群组对某些文件的访问权限,保护文件的安全性。 3. 易于使用:HFS提供了简洁的界面和直观的操作方式,即使对于没有网络知识的用户也能够轻松上手。 4. 自定义设置:HFS支持用户自定义界面风格和文件夹的图标,可以根据个人喜好进行设置,使使用者感到舒适和便捷。 5. 快速传输:HFS使用HTTP协议,并采用多线程方式传输文件,大大提高了文件传输的速度和效率。 总之,HFS是一款功能强大、易用且安全可靠的网络文件服务器工具。无论是在家庭环境中与家人共享文件,还是在企业中共享文件资源,它都能够满足用户的需求。它的简洁易用的特点使得任何人都可以轻松地搭建自己的文件服务器,并实现文件的快速访问和传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值