fileinfo

PHP实战之文件上传与下载

走远了吗. 提交于 2020-08-18 06:39:58
目录 1. 前言 2.代码实战 2.1 客户端页面配置说明 2.2 $_FILES预定义变量解析 2.3文件的移动方式 2.3.1第一种移动形式 2.3.2第二种移动形式 2.4 文件上传配置及解析 2.5 错误信息说明 3. 文件上传案例实战 3.1客户端限制 3.2服务器端限制 3.2.1限制上传文件大小 3.2.2限制上传文件类型 3.2.3检测是非真实图片类型 3.2.4检测是非为HTTP POST方式上传 3.2.5确保上传文件名唯一 3.2.6 uploads目录不存在时候,自动创建目录 3.3 单文件上传函数封装 3.4 多文件上传案例实战    3.5封装上传文件类 3.6 文件下载  4. 总结 1. 前言 PHP文件上传原理 就是客户端文件上传到服务器端,再将服务器端临时文件移动到指定目录,下面我们一起实战一下,加深印象。 2.代码实战 2.1 客户端页面配置说明 上传文件必须满足以下三个条件: 表单页面 表单发送方式为psot 必须添加enctype= ” multipart/form-data ” 如下代码所示: <form action="doAction.php" class="file" method="post" enctype="multipart/form-data"> <input type="file" name="myFile"><br/>

C#:使用ajax异步请求实现文件上传与下载功能。---项目框架API+MVC

試著忘記壹切 提交于 2020-08-16 03:33:30
1.首先使用VS创建WebAPI项目 (这里有个帮助类,将此帮助类复制到项目里,有兴趣可以学着写) // 文件上传下载,导入导出辅助类 public class APIFileHelp {    // 此为限制文件格式    public string [] ExtentsfileName = new string [] { " .doc " , " .xls " , " .png " , " .jpg " };    // Upload为自定义的文件夹,在项目中创建    public string UrlPath = " /Upload/ " ;    // 响应对象 ,使用前先赋值    public HttpResponse Response = HttpContext.Current.Response;    public HttpRequest Request = HttpContext.Current.Request;    // 文件下载    // downFileName下载后保存名,sourceFileName服务器端物理路径    public void DownLoad( string downFileName, string sourceFileName)   {      if (File.Exists(sourceFileName))     {  

【无私分享:ASP.NET CORE 项目实战(第七章)】文件操作 FileHelper

与世无争的帅哥 提交于 2020-08-15 09:24:17
原文: 【无私分享:ASP.NET CORE 项目实战(第七章)】文件操作 FileHelper 目录索引   【无私分享:ASP.NET CORE 项目实战】目录索引 简介   在程序设计中,我们很多情况下,会用到对文件的操作,在 上一个系列 中,我们有很多文件基本操作的示例,在Core中有一些改变,主要是我们常用的Server.MapPath()不存在了,不知道后续的版本会不会有,在这里,我们只能自己封装方法去实现。今天,我们就对一些基本的操作写了一个 FileHelper 类,供大家探讨。在此要感谢以为不愿意透漏姓名的大神的帮助: @YINYEJUN 获取文件的绝对路径    在以前的操作中,这个应该是十分简单的,可以通过 System.Web.HttpContext.Current.Server.MapPath("...") 直接获取,简介中,我们讲过,这个方法已经不存在了,网上翻阅了很多资料,Server.MapPath 最终调用 HostingEnvironment.MapPath() ,但是,它创建了一个特定选项的 virtualpath 对象,我们暂时先不管这些原理性的东西,我们看下如何去实现。      我们这里需要用到 IHostingEnvironment ,注入的方式有很多, 最推荐的 是 构造器 的注入,例如:       public readonly

获取上次打开目录

五迷三道 提交于 2020-08-11 23:28:51
路径简单保存到csv文件的方式,下次直接获取。 调用方法: try { dialog.SelectedPath = FolderPathHelper.GetLastPath( " 9009 " , " 菜单1 " ); } catch (Exception ex) { Log($ " 获取路径失败:{ex.ToString()} " ); #if DEBUG throw ex; #endif } try { FolderPathHelper.SavePath( " 9009 " , " 菜单1 " , " C:\\ " ); } catch (Exception ex) { Log($ " 保存路径失败:{ex.ToString()} " ); #if DEBUG throw ex; #endif } 保存与获取的类: public class FolderPathHelper { public static string GetLastPath( string user, string menu) { string currentPath = Directory.GetCurrentDirectory() + " \\UserPath\\LastPath.csv " ; if (! File.Exists(currentPath)) { return "" ; } var

重构 JAVA 聊天室 —— CS 模式的简单架构实现

泪湿孤枕 提交于 2020-08-11 23:24:00
前言 自从开始弄起数据挖掘之后,已经很久没写过技术类的博客了,最近学校 JAVA 课设要求实现一个聊天室,想想去年自己已经写了一个了,但是有些要求到的功能我也没实现,但看着原有的代码想了想加功能好像有那么点点难,于是就想着重构,也正好之前有看到别人写的CS架构的代码,感觉扩展性还不错,就试着写了写,写完这个聊天室后,还同时写了一个教学白板,那个白板基于这个聊天室的代码仅仅花了三四个小时就完成了!所以,有一个好的架构还是很重要的。下面就开始介绍我重构后的聊天室( 代码已上传到github ) 功能介绍 1. 用 Java图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号, 包括注册功能 。 2. 可以实现群聊(聊天记录显示在所有客户端界面)。 3. 完成好友列表在各个客户端上显示, 包括头像和用户名 。 4. 可以实现私人聊天,用户可以选择某个其他用户,单独发送信息, 同时实现了文件传输,还能发送窗口振动 。 5. 服务器能够群发系统消息, 能够对用户私发消息 ,能够强行让某些用户下线。 6. 客户端的上线下线要求能够在其他客户端上面实时刷新。 7.服务器能够查看在线用户和注册用户 (加了下划线的是课设要求之外的) 整体思路 数了数,总共写了27个类,看起来还是蛮多的,但是仔细看一看还是很简单的,我将在下面对其中部分进行解释 工具类

C#对.CSV格式的文件--逗号分隔值文件 的读写操作及上传ftp服务器操作方法总结

╄→尐↘猪︶ㄣ 提交于 2020-08-11 19:45:04
前言 公司最近开发需要将数据保存到.csv文件(逗号分隔值 文件)中然后上传到ftp服务器上,供我们系统还有客户系统调用,之前完全没有接触过这个,所以先来看看百度的解释:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个 字符 序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由 字段 组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或 制表符 。通常,所有记录都有完全相同的字段序列。 CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是7-bit ASCII 是最基本的通用编码。 简单的说就是逗号隔开 双引号 内即为吗需要的值 数据格式并没有非常统一的标准 但是为了避免出错 我们在开发的时候统一格式是这样的 "name","pwd","date" "张三","123","2015-09-30" 接下来代码处理中默认格式都是这样的 其实就是纯文本的形式 为什么要用csv文件 这就涉及到数据互通的问题,有些程序支持的表格数据另一些程序并不见得支持,而csv格式的却被大多数的应用程序支持,所以在交换保存数据的时候是个不错的选择。

nodeJs + js 大文件分片上传

自古美人都是妖i 提交于 2020-08-11 19:19:34
简单的文件上传 一、准备文件上传的条件: 1、安装nodejs环境 2、安装vue环境 3、验证环境是否安装成功 二、实现上传步骤 1、前端部分使用 vue-cli 脚手架,搭建一个 demo 版本,能够实现简单交互: < template > < div id ="app" > < input type ="file" @change ="uploadFile" ></ button > </ div > </ template > 2、安装 axios 实现与后端交互: import Axios from 'axios' const Server = Axios.create({ baseURL: '/api' }) export default Server 3、后端使用 node-koa 框架: // index.js const Koa = require('koa' ); const router = require('koa-router')() // koa路由组件 const fs = require('fs') // 文件组件 const path = require('path') // 路径组件 const koaBody = require('koa-body') // 解析上传文件的插件 const static = require('koa

C# 基础知识系列- 17 小工具优化

时间秒杀一切 提交于 2020-08-11 18:27:27
0. 前言 不知道有没有动手能力强的小伙伴照着上一篇的内容写过程序呢?如果有的话,应该会在使用的时候发现以下几个问题: 每次启动都需要经过漫长的时间去遍历磁盘里的文件目录 因为数据是用的字典保存的,所以会消耗大量的内存空间 不能多次查询 现在我们就针对这些问题,让我们的小工具实用起来。 1. 分析与实现 在动手之前,我们先分析一下问题。在实际开发之前,无论是接到什么需求都要先仔细分析一下,确定好方案再动手方为开发的正道。嗯,没毛病。因为开发过程中跟产品对线、跟客户对线要占整个项目的一半左右时间。好了,不废话了。继续: 遍历文件目录的时间过长,那么我们是不是可以用异步并发去遍历呢? 数据用字典保存会消耗内存空间,那么我们是不是可以用其他的方式保存呢? 不能多次查询,是不是可以使用循环,然后设置一个退出条件? 1.1 C#的异步/并发实现 在C#里,异步和并发的实现是依据线程、任务来实现的。在之前《C# 基础知识系列- 12 任务和多线程》里大概介绍了一下线程和任务,我们知道线程本身是没法返回数据的,它与主线程进行数据交互的过程十分需要注意线程安全。而任务可以返回数据,不需要像线程一样小心翼翼地与主线程进行数据交互。任务有一个优点,它比线程更轻量,所以在当前环境下我们可以试试任务。 当然,线程也有优点,那就是线程的运行环境相对更封闭一点,它能完成一个长的大型运算。 那么继续上一篇的内容

C# Log4Net学习笔记:记录日志到数据库

主宰稳场 提交于 2020-08-11 15:38:36
一、数据准备 在SQL Server中创建记录日志的数据表LogDetail: CREATE TABLE [ dbo ] . [ LogDetail ] ( [ LogID ] [ INT ] IDENTITY ( 1 , 1 ) NOT NULL , -- 自增ID [ LogDate ] [ DATETIME ] NULL , -- 日志时间 [ LogLevel ] [ NVARCHAR ] ( 10 ) NULL , -- 日志级别 [ LogThread ] [ NVARCHAR ] ( 10 ) NULL , -- 线程ID [ Logger ] [ NVARCHAR ] ( 50 ) NULL , --日志名称 [ LogMessage ] [ NVARCHAR ] ( 3000 ) NULL , -- 日志内容 CONSTRAINT [ PK_LogDetail ] PRIMARY KEY CLUSTERED ( [ LogID ] ASC ) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] ) ON [ PRIMARY ] 在此表中

nodeJs + js 大文件分片上传

假如想象 提交于 2020-08-11 13:40:52
简单的文件上传 一、准备文件上传的条件: 1、安装nodejs环境 2、安装vue环境 3、验证环境是否安装成功 二、实现上传步骤 1、前端部分使用 vue-cli 脚手架,搭建一个 demo 版本,能够实现简单交互: < template > < div id ="app" > < input type ="file" @change ="uploadFile" ></ button > </ div > </ template > 2、安装 axios 实现与后端交互: import Axios from 'axios' const Server = Axios.create({ baseURL: '/api' }) export default Server 3、后端使用 node-koa 框架: // index.js const Koa = require('koa' ); const router = require('koa-router')() // koa路由组件 const fs = require('fs') // 文件组件 const path = require('path') // 路径组件 const koaBody = require('koa-body') // 解析上传文件的插件 const static = require('koa