{"id":19029152,"url":"https://github.com/aileshe/upload","last_synced_at":"2025-03-17T16:10:41.063Z","repository":{"id":56942707,"uuid":"130815239","full_name":"aileshe/Upload","owner":"aileshe","description":"优雅的PHP文件上传组件。","archived":false,"fork":false,"pushed_at":"2018-04-25T09:50:45.000Z","size":57,"stargazers_count":124,"open_issues_count":2,"forks_count":37,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-05T00:59:38.444Z","etag":null,"topics":["file-upload","php","upload","upload-file"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aileshe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-24T07:37:10.000Z","updated_at":"2023-12-14T02:01:06.000Z","dependencies_parsed_at":"2022-08-21T07:50:33.439Z","dependency_job_id":null,"html_url":"https://github.com/aileshe/Upload","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aileshe%2FUpload","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aileshe%2FUpload/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aileshe%2FUpload/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aileshe%2FUpload/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aileshe","download_url":"https://codeload.github.com/aileshe/Upload/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244066180,"owners_count":20392406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-upload","php","upload","upload-file"],"created_at":"2024-11-08T21:13:24.378Z","updated_at":"2025-03-17T16:10:41.044Z","avatar_url":"https://github.com/aileshe.png","language":"PHP","readme":"# Upload是什么?\n一个PHP文件上传组件，该组件简化了上传文件的验证使用会更简单优雅！\n\n# 安装\n通过composer，这是推荐的方式，可以使用composer.json 声明依赖，或者直接运行下面的命令。\n```\ncomposer require aileshe/upload:*\n```\n放入composer.json文件中\n```\n    \"require\": {\n        \"aileshe/upload\": \"*\"\n    }\n```\n然后运行\n```\ncomposer update\n```\n\n# 基本用法\n以下是一个模拟 \"单文件上传\" 和 \"多文件上传\" 的Demo表单HTML代码\n```\n\u003c!-- 本地单文件上传 Start--\u003e\n\u003cdiv\u003e\n    \u003cspan\u003e本地单文件上传\u003c/span\u003e\n    \u003cform action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\"\u003e\n        \u003cinput type=\"file\" name=\"file\"/\u003e\n        \u003cinput type=\"submit\" value=\"上传\"/\u003e\n    \u003c/form\u003e\n\u003c/div\u003e\n\u003c!-- 本地单文件上传 End--\u003e\n    \n\u003c!-- 本地多文件上传 Start--\u003e\n\u003cdiv style=\"margin-top:20px;\"\u003e\n    \u003cspan\u003e本地多文件上传\u003c/span\u003e\n    \u003cform action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\"\u003e\n        \u003cinput type=\"file\" name=\"file[]\"/\u003e\u003cbr/\u003e\n        \u003cinput type=\"file\" name=\"file[]\"/\u003e\u003cbr/\u003e\n        \u003cinput type=\"file\" name=\"file[]\"/\u003e\n        \u003cinput type=\"submit\" value=\"上传\"/\u003e\n    \u003c/form\u003e\n\u003c/div\u003e\n\u003c!-- 本地多文件上传 End--\u003e\n```\nupload.php 代码如下\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload');\nif(is_array($filelist)){\n    # 返回数组，文件就上传成功了\n    print_r($filelist);\n}else{\n    # 如果返回负整数(int)就是发生错误了\n    $error_msg = [-1=\u003e'上传失败',-2=\u003e'文件存储路径不合法',-3=\u003e'上传非法格式文件',-4=\u003e'文件大小不合符规定',-5=\u003e'token验证错误'];\n    echo $error_msg[$filelist];\n}\n```\n上传成功返回打印结果\n```\n# 单文件上传\nArray\n(\n    [name] =\u003e 919ff6986614ada.jpg    // 上传时的原文件名\n    [ext] =\u003e jpg                     // 文件后缀名\n    [mime] =\u003e image/jpeg             // 文件MIME\n    [size] =\u003e 171635                 // 文件大小(单位:字节)\n    [savename] =\u003e 1524626782VGdnXS50.jpg    // 文件上传后在服务器上存储的名称\n    [savepath] =\u003e E:/WWW/composer/upload_dev/upload/1524626782VGdnXS50.jpg  // 上传到服务器的存储绝对路径\n    [url] =\u003e http://upload.a.com/upload/1524626782VGdnXS50.jpg  // 文件访问URL地址\n    [uri] =\u003e /upload/1524626782VGdnXS50.jpg                     // 文件访问URI地址\n    [md5] =\u003e 6308045756c126c8b823f4ade0bad77d                   // 文件MD5\n)\n\n# 多文件上传\nArray\n(\n    [0] =\u003e Array\n        (\n            [name] =\u003e dejan.jpg\n            [ext] =\u003e jpg\n            [mime] =\u003e image/jpeg\n            [size] =\u003e 1964\n            [savename] =\u003e 1524627074JQLQuKXs.jpg\n            [savepath] =\u003e E:/WWW/composer/upload_dev/upload/1524627074JQLQuKXs.jpg\n            [url] =\u003e http://upload.a.com/upload/1524627074JQLQuKXs.jpg\n            [uri] =\u003e /upload/1524627074JQLQuKXs.jpg\n            [md5] =\u003e 9382a7b44ea865519c82d077cd6346b0\n        )\n\n    [1] =\u003e Array\n        (\n            [name] =\u003e 《系统安装手册》.docx\n            [ext] =\u003e docx\n            [mime] =\u003e application/vnd.openxmlformats-officedocument.wordprocessingml.document\n            [size] =\u003e 1041956\n            [savename] =\u003e 1524627074oQVSkUO2.docx\n            [savepath] =\u003e E:/WWW/composer/upload_dev/upload/1524627074oQVSkUO2.docx\n            [url] =\u003e http://upload.a.com/upload/1524627074oQVSkUO2.docx\n            [uri] =\u003e /upload/1524627074oQVSkUO2.docx\n            [md5] =\u003e 9f1c186790769c09a9318eb352deb114\n        )\n\n    [2] =\u003e Array\n        (\n            [name] =\u003e 测试导入用户.xlsx\n            [ext] =\u003e xlsx\n            [mime] =\u003e application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\n            [size] =\u003e 9249\n            [savename] =\u003e 1524627074LUkMlrPQ.xlsx\n            [savepath] =\u003e E:/WWW/composer/upload_dev/upload/1524627074LUkMlrPQ.xlsx\n            [url] =\u003e http://upload.a.com/upload/1524627074LUkMlrPQ.xlsx\n            [uri] =\u003e /upload/1524627074LUkMlrPQ.xlsx\n            [md5] =\u003e b1f1c10005fcf0a2b59326a3aa3af032\n        )\n\n)\n\n```\n### $upload-\u003esave($storage, $allow, $host) \n\n\u003e \\- storage [string]\n\n上传文件到哪的存储路径\n\n\u003e \\- allow (optional) [array]\n\n文件上传过滤允许规则定义\n\n\u003e \\- host (optional) [string]\n\n上传到服务器后文件的URL访问域名\n\n### $upload-\u003esave($storage, $host) \n\n\u003e \\- storage [string]\n\n上传文件到哪的存储路径\n\n\u003e \\- host (optional) [string]\n\n上传到服务器后文件的URL访问域名\n\n\n\n#### 返回值参照:\n\n返回值     |  说明\n:--------:|:----------:\nArray()   | 上传文件成功\n-1        | 上传失败\n-2        | 指定上传文件的存储路径不合法\n-3        | 上传非法格式文件\n-4        | 文件大小不合符规定\n-5        | token验证错误\n\n# 高级用法\n#### 1) 设置上传文件表单name, 默认是'file'\n```\nnew \\Dj\\Upload('form-file-name');   # \u003cinput type=\"file\" name=\"form-file-name\"/\u003e\n```\n\n#### 2) 开启 token验证\n```\n$upload = new \\Dj\\Upload();\n$upload-\u003etoken('FFFX123456');  # 设置 token\n$filelist = $upload-\u003esave('./upload');\n\n# 或\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003etoken('FFFX123456')-\u003esave('./upload');\n```\n同时在上传文件时要也要POST提交正确的token\n```\n\u003cform action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\"\u003e\n    \u003cinput type=\"hidden\" name=\"token\" value=\"FFFX123456\"/\u003e\n    \u003cinput type=\"file\" name=\"file\"/\u003e\n    \u003cinput type=\"submit\" value=\"上传\"/\u003e\n\u003c/form\u003e\n```\n\n#### 3) 上传指定格式文件(通过后缀名方式限制)\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e'jpg,jpeg,png,gif'\n]);\n\n# 或\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e['jpg','jpeg','png','gif']\n]);\n```\n\n#### 4) 上传指定格式文件(通过MIME方式限制)\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'mime'=\u003e'image/jpeg,image/gif,image/bmp'\n]);\n\n# 或\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'mime'=\u003e['image/jpeg','image/gif','image/bmp']\n]);\n```\n\n#### 5) 上传文件许可的大小限制\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'size'=\u003e5242880\n]);\n```\n同时\"过滤参数\"是可以混用的, 如 只想限制文件大小和文件类型、可以上传xx后缀的同时要匹配MIME等.. 都可以的大胆相信无所不能!\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e'jpg,jpeg,png,gif',\n    'mime'=\u003e'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n    'size'=\u003e5242880\n]);\n\n# 或\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e'jpg,jpeg,png,gif',\n    'size'=\u003e5242880\n]);\n\n# 或\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e'jpg,jpeg,png,gif',\n    'mime'=\u003e'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n]);\n```\n\n#### 6) 设置上传后返回文件URL的域名\n```\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', 'img.sop6.com');\n\n# 如果有过滤参数还可以这样定义\n\n$upload = new \\Dj\\Upload();\n$filelist = $upload-\u003esave('./upload', [\n    'ext'=\u003e'jpg,jpeg,png,gif',\n    'mime'=\u003e'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n    'size'=\u003e5242880\n], 'img.sop6.com');\n```\n设置域名img.sop6.com后返回的上传结果如下(带 * 号那行)\n```\nArray\n(\n    [name] =\u003e 919ff6986614ada.jpg    // 上传时的原文件名\n    [ext] =\u003e jpg                     // 文件后缀名\n    [mime] =\u003e image/jpeg             // 文件MIME\n    [size] =\u003e 171635                 // 文件大小(单位:字节)\n    [savename] =\u003e 1524626782VGdnXS50.jpg    // 文件上传后在服务器上存储的名称\n    [savepath] =\u003e E:/WWW/composer/upload_dev/upload/1524626782VGdnXS50.jpg  // 上传到服务器的存储绝对路径\n    [url] =\u003e http://img.sop6.com/upload/1524626782VGdnXS50.jpg  // * 文件访问URL地址\n    [uri] =\u003e /upload/1524626782VGdnXS50.jpg                     // 文件访问URI地址\n    [md5] =\u003e 6308045756c126c8b823f4ade0bad77d                   // 文件MD5\n)\n```\n\n# 联系方式\nAuthor: Dejan\n\nQQ: 673008865\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faileshe%2Fupload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faileshe%2Fupload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faileshe%2Fupload/lists"}