From b28ef840ec87ecd82a3093e3848e22dcb7d0a0e9 Mon Sep 17 00:00:00 2001 From: Miguel Mich Date: Thu, 14 Nov 2024 18:18:24 -0500 Subject: [PATCH] Removed jquery file upload server example files --- jquery.upload/server/gae-go/app.yaml | 12 - jquery.upload/server/gae-go/app/main.go | 296 ---- .../server/gae-go/static/favicon.ico | Bin 1150 -> 0 bytes jquery.upload/server/gae-go/static/robots.txt | 2 - jquery.upload/server/gae-python/app.yaml | 16 - jquery.upload/server/gae-python/main.py | 170 --- .../server/gae-python/static/favicon.ico | Bin 1150 -> 0 bytes .../server/gae-python/static/robots.txt | 2 - jquery.upload/server/node/.gitignore | 2 - jquery.upload/server/node/package.json | 41 - .../server/node/public/files/.gitignore | 2 - jquery.upload/server/node/server.js | 292 ---- jquery.upload/server/node/tmp/.gitignore | 0 jquery.upload/server/php/UploadHandler.php | 1329 ----------------- jquery.upload/server/php/fil/avatar1.jpg | Bin 14793 -> 0 bytes .../server/php/fil/thumbnail/avatar1.jpg | Bin 2423 -> 0 bytes jquery.upload/server/php/files/.gitignore | 3 - jquery.upload/server/php/index.php | 18 - 18 files changed, 2185 deletions(-) delete mode 100644 jquery.upload/server/gae-go/app.yaml delete mode 100644 jquery.upload/server/gae-go/app/main.go delete mode 100644 jquery.upload/server/gae-go/static/favicon.ico delete mode 100644 jquery.upload/server/gae-go/static/robots.txt delete mode 100644 jquery.upload/server/gae-python/app.yaml delete mode 100644 jquery.upload/server/gae-python/main.py delete mode 100644 jquery.upload/server/gae-python/static/favicon.ico delete mode 100644 jquery.upload/server/gae-python/static/robots.txt delete mode 100644 jquery.upload/server/node/.gitignore delete mode 100644 jquery.upload/server/node/package.json delete mode 100644 jquery.upload/server/node/public/files/.gitignore delete mode 100644 jquery.upload/server/node/server.js delete mode 100644 jquery.upload/server/node/tmp/.gitignore delete mode 100644 jquery.upload/server/php/UploadHandler.php delete mode 100644 jquery.upload/server/php/fil/avatar1.jpg delete mode 100644 jquery.upload/server/php/fil/thumbnail/avatar1.jpg delete mode 100644 jquery.upload/server/php/files/.gitignore delete mode 100644 jquery.upload/server/php/index.php diff --git a/jquery.upload/server/gae-go/app.yaml b/jquery.upload/server/gae-go/app.yaml deleted file mode 100644 index 2d09daa..0000000 --- a/jquery.upload/server/gae-go/app.yaml +++ /dev/null @@ -1,12 +0,0 @@ -application: jquery-file-upload -version: 2 -runtime: go -api_version: go1 - -handlers: -- url: /(favicon\.ico|robots\.txt) - static_files: static/\1 - upload: static/(.*) - expiration: '1d' -- url: /.* - script: _go_app diff --git a/jquery.upload/server/gae-go/app/main.go b/jquery.upload/server/gae-go/app/main.go deleted file mode 100644 index f995f73..0000000 --- a/jquery.upload/server/gae-go/app/main.go +++ /dev/null @@ -1,296 +0,0 @@ -/* - * jQuery File Upload Plugin GAE Go Example 3.1.1 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -package app - -import ( - "appengine" - "appengine/blobstore" - "appengine/image" - "appengine/taskqueue" - "bytes" - "encoding/json" - "fmt" - "io" - "log" - "mime/multipart" - "net/http" - "net/url" - "regexp" - "strings" - "time" -) - -const ( - WEBSITE = "http://blueimp.github.io/jQuery-File-Upload/" - MIN_FILE_SIZE = 1 // bytes - MAX_FILE_SIZE = 5000000 // bytes - IMAGE_TYPES = "image/(gif|p?jpeg|(x-)?png)" - ACCEPT_FILE_TYPES = IMAGE_TYPES - EXPIRATION_TIME = 300 // seconds - THUMBNAIL_PARAM = "=s80" -) - -var ( - imageTypes = regexp.MustCompile(IMAGE_TYPES) - acceptFileTypes = regexp.MustCompile(ACCEPT_FILE_TYPES) -) - -type FileInfo struct { - Key appengine.BlobKey `json:"-"` - Url string `json:"url,omitempty"` - ThumbnailUrl string `json:"thumbnailUrl,omitempty"` - Name string `json:"name"` - Type string `json:"type"` - Size int64 `json:"size"` - Error string `json:"error,omitempty"` - DeleteUrl string `json:"deleteUrl,omitempty"` - DeleteType string `json:"deleteType,omitempty"` -} - -func (fi *FileInfo) ValidateType() (valid bool) { - if acceptFileTypes.MatchString(fi.Type) { - return true - } - fi.Error = "Filetype not allowed" - return false -} - -func (fi *FileInfo) ValidateSize() (valid bool) { - if fi.Size < MIN_FILE_SIZE { - fi.Error = "File is too small" - } else if fi.Size > MAX_FILE_SIZE { - fi.Error = "File is too big" - } else { - return true - } - return false -} - -func (fi *FileInfo) CreateUrls(r *http.Request, c appengine.Context) { - u := &url.URL{ - Scheme: r.URL.Scheme, - Host: appengine.DefaultVersionHostname(c), - Path: "/", - } - uString := u.String() - fi.Url = uString + escape(string(fi.Key)) + "/" + - escape(string(fi.Name)) - fi.DeleteUrl = fi.Url + "?delete=true" - fi.DeleteType = "DELETE" - if imageTypes.MatchString(fi.Type) { - servingUrl, err := image.ServingURL( - c, - fi.Key, - &image.ServingURLOptions{ - Secure: strings.HasSuffix(u.Scheme, "s"), - Size: 0, - Crop: false, - }, - ) - check(err) - fi.ThumbnailUrl = servingUrl.String() + THUMBNAIL_PARAM - } -} - -func check(err error) { - if err != nil { - panic(err) - } -} - -func escape(s string) string { - return strings.Replace(url.QueryEscape(s), "+", "%20", -1) -} - -func delayedDelete(c appengine.Context, fi *FileInfo) { - if key := string(fi.Key); key != "" { - task := &taskqueue.Task{ - Path: "/" + escape(key) + "/-", - Method: "DELETE", - Delay: time.Duration(EXPIRATION_TIME) * time.Second, - } - taskqueue.Add(c, task, "") - } -} - -func handleUpload(r *http.Request, p *multipart.Part) (fi *FileInfo) { - fi = &FileInfo{ - Name: p.FileName(), - Type: p.Header.Get("Content-Type"), - } - if !fi.ValidateType() { - return - } - defer func() { - if rec := recover(); rec != nil { - log.Println(rec) - fi.Error = rec.(error).Error() - } - }() - lr := &io.LimitedReader{R: p, N: MAX_FILE_SIZE + 1} - context := appengine.NewContext(r) - w, err := blobstore.Create(context, fi.Type) - defer func() { - w.Close() - fi.Size = MAX_FILE_SIZE + 1 - lr.N - fi.Key, err = w.Key() - check(err) - if !fi.ValidateSize() { - err := blobstore.Delete(context, fi.Key) - check(err) - return - } - delayedDelete(context, fi) - fi.CreateUrls(r, context) - }() - check(err) - _, err = io.Copy(w, lr) - return -} - -func getFormValue(p *multipart.Part) string { - var b bytes.Buffer - io.CopyN(&b, p, int64(1<<20)) // Copy max: 1 MiB - return b.String() -} - -func handleUploads(r *http.Request) (fileInfos []*FileInfo) { - fileInfos = make([]*FileInfo, 0) - mr, err := r.MultipartReader() - check(err) - r.Form, err = url.ParseQuery(r.URL.RawQuery) - check(err) - part, err := mr.NextPart() - for err == nil { - if name := part.FormName(); name != "" { - if part.FileName() != "" { - fileInfos = append(fileInfos, handleUpload(r, part)) - } else { - r.Form[name] = append(r.Form[name], getFormValue(part)) - } - } - part, err = mr.NextPart() - } - return -} - -func get(w http.ResponseWriter, r *http.Request) { - if r.URL.Path == "/" { - http.Redirect(w, r, WEBSITE, http.StatusFound) - return - } - parts := strings.Split(r.URL.Path, "/") - if len(parts) == 3 { - if key := parts[1]; key != "" { - blobKey := appengine.BlobKey(key) - bi, err := blobstore.Stat(appengine.NewContext(r), blobKey) - if err == nil { - w.Header().Add("X-Content-Type-Options", "nosniff") - if !imageTypes.MatchString(bi.ContentType) { - w.Header().Add("Content-Type", "application/octet-stream") - w.Header().Add( - "Content-Disposition", - fmt.Sprintf("attachment; filename=\"%s\"", parts[2]), - ) - } - w.Header().Add( - "Cache-Control", - fmt.Sprintf("public,max-age=%d", EXPIRATION_TIME), - ) - blobstore.Send(w, blobKey) - return - } - } - } - http.Error(w, "404 Not Found", http.StatusNotFound) -} - -func post(w http.ResponseWriter, r *http.Request) { - result := make(map[string][]*FileInfo, 1) - result["files"] = handleUploads(r) - b, err := json.Marshal(result) - check(err) - if redirect := r.FormValue("redirect"); redirect != "" { - if strings.Contains(redirect, "%s") { - redirect = fmt.Sprintf( - redirect, - escape(string(b)), - ) - } - http.Redirect(w, r, redirect, http.StatusFound) - return - } - w.Header().Set("Cache-Control", "no-cache") - jsonType := "application/json" - if strings.Index(r.Header.Get("Accept"), jsonType) != -1 { - w.Header().Set("Content-Type", jsonType) - } - fmt.Fprintln(w, string(b)) -} - -func delete(w http.ResponseWriter, r *http.Request) { - parts := strings.Split(r.URL.Path, "/") - if len(parts) != 3 { - return - } - result := make(map[string]bool, 1) - if key := parts[1]; key != "" { - c := appengine.NewContext(r) - blobKey := appengine.BlobKey(key) - err := blobstore.Delete(c, blobKey) - check(err) - err = image.DeleteServingURL(c, blobKey) - check(err) - result[key] = true - } - jsonType := "application/json" - if strings.Index(r.Header.Get("Accept"), jsonType) != -1 { - w.Header().Set("Content-Type", jsonType) - } - b, err := json.Marshal(result) - check(err) - fmt.Fprintln(w, string(b)) -} - -func handle(w http.ResponseWriter, r *http.Request) { - params, err := url.ParseQuery(r.URL.RawQuery) - check(err) - w.Header().Add("Access-Control-Allow-Origin", "*") - w.Header().Add( - "Access-Control-Allow-Methods", - "OPTIONS, HEAD, GET, POST, PUT, DELETE", - ) - w.Header().Add( - "Access-Control-Allow-Headers", - "Content-Type, Content-Range, Content-Disposition", - ) - switch r.Method { - case "OPTIONS": - case "HEAD": - case "GET": - get(w, r) - case "POST": - if len(params["_method"]) > 0 && params["_method"][0] == "DELETE" { - delete(w, r) - } else { - post(w, r) - } - case "DELETE": - delete(w, r) - default: - http.Error(w, "501 Not Implemented", http.StatusNotImplemented) - } -} - -func init() { - http.HandleFunc("/", handle) -} diff --git a/jquery.upload/server/gae-go/static/favicon.ico b/jquery.upload/server/gae-go/static/favicon.ico deleted file mode 100644 index 1a71ea772e972df2e955b36261ae5d7f53b9c9b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmd5)OKVd>6rNI{3l|0|#f50WO+XjL$3`~+!3T;Ix^p413yHRhmS9^&ywzgVMH)<- zCQV34A4!wjylP%GkDGUz=QT;NG>gb*8n4`ye3#{^zkce45EvUvW9N8Y#yV5-i2?n|gRoZc<%s zmh~rn+mM*?Ph4ge?;K&MO=5dH$Y(hhHh2y-K8|XULpI_@BFLhc^dYyZ;RQd6ULnX% zY7XBrdX%kq;dvp(g8Ue4lb2A6TCi0~Be~{)e`OwVpB?PH2D#WOBIv*k9@h8svMjN%LB8=hT3X!a(GF&~^uI=HQRRDv3$W^b7s@-uyV zh0r)6|MU>DZWSsYRM^NkQI4_jJUxMR7lX9x9lUlU?B*HdJ=56ZweCUP$ZoY9rFF+p zujNrIgppL7LdhyaA;coEVs7#ao|(V$&G-5wg`mF4|60vrXX_&(76p9^7qVeblj~)T zDEamE)_Ys!wZ}cExSr6rOJIAGMbZ`| MAX_FILE_SIZE: - file['error'] = 'File is too big' - elif not ACCEPT_FILE_TYPES.match(file['type']): - file['error'] = 'Filetype not allowed' - else: - return True - return False - - def get_file_size(self, file): - file.seek(0, 2) # Seek to the end of the file - size = file.tell() # Get the position of EOF - file.seek(0) # Reset the file position to the beginning - return size - - def write_blob(self, data, info): - blob = files.blobstore.create( - mime_type=info['type'], - _blobinfo_uploaded_filename=info['name'] - ) - with files.open(blob, 'a') as f: - f.write(data) - files.finalize(blob) - return files.blobstore.get_blob_key(blob) - - def handle_upload(self): - results = [] - blob_keys = [] - for name, fieldStorage in self.request.POST.items(): - if type(fieldStorage) is unicode: - continue - result = {} - result['name'] = re.sub( - r'^.*\\', - '', - fieldStorage.filename - ) - result['type'] = fieldStorage.type - result['size'] = self.get_file_size(fieldStorage.file) - if self.validate(result): - blob_key = str( - self.write_blob(fieldStorage.value, result) - ) - blob_keys.append(blob_key) - result['deleteType'] = 'DELETE' - result['deleteUrl'] = self.request.host_url +\ - '/?key=' + urllib.quote(blob_key, '') - if (IMAGE_TYPES.match(result['type'])): - try: - result['url'] = images.get_serving_url( - blob_key, - secure_url=self.request.host_url.startswith( - 'https' - ) - ) - result['thumbnailUrl'] = result['url'] +\ - THUMBNAIL_MODIFICATOR - except: # Could not get an image serving url - pass - if not 'url' in result: - result['url'] = self.request.host_url +\ - '/' + blob_key + '/' + urllib.quote( - result['name'].encode('utf-8'), '') - results.append(result) - deferred.defer( - cleanup, - blob_keys, - _countdown=EXPIRATION_TIME - ) - return results - - def options(self): - pass - - def head(self): - pass - - def get(self): - self.redirect(WEBSITE) - - def post(self): - if (self.request.get('_method') == 'DELETE'): - return self.delete() - result = {'files': self.handle_upload()} - s = json.dumps(result, separators=(',', ':')) - redirect = self.request.get('redirect') - if redirect: - return self.redirect(str( - redirect.replace('%s', urllib.quote(s, ''), 1) - )) - if 'application/json' in self.request.headers.get('Accept'): - self.response.headers['Content-Type'] = 'application/json' - self.response.write(s) - - def delete(self): - key = self.request.get('key') or '' - blobstore.delete(key) - s = json.dumps({key: True}, separators=(',', ':')) - if 'application/json' in self.request.headers.get('Accept'): - self.response.headers['Content-Type'] = 'application/json' - self.response.write(s) - - -class DownloadHandler(blobstore_handlers.BlobstoreDownloadHandler): - def get(self, key, filename): - if not blobstore.get(key): - self.error(404) - else: - # Prevent browsers from MIME-sniffing the content-type: - self.response.headers['X-Content-Type-Options'] = 'nosniff' - # Cache for the expiration time: - self.response.headers['Cache-Control'] = 'public,max-age=%d' % EXPIRATION_TIME - # Send the file forcing a download dialog: - self.send_blob(key, save_as=filename, content_type='application/octet-stream') - -app = webapp2.WSGIApplication( - [ - ('/', UploadHandler), - ('/([^/]+)/([^/]+)', DownloadHandler) - ], - debug=True -) diff --git a/jquery.upload/server/gae-python/static/favicon.ico b/jquery.upload/server/gae-python/static/favicon.ico deleted file mode 100644 index 1a71ea772e972df2e955b36261ae5d7f53b9c9b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmd5)OKVd>6rNI{3l|0|#f50WO+XjL$3`~+!3T;Ix^p413yHRhmS9^&ywzgVMH)<- zCQV34A4!wjylP%GkDGUz=QT;NG>gb*8n4`ye3#{^zkce45EvUvW9N8Y#yV5-i2?n|gRoZc<%s zmh~rn+mM*?Ph4ge?;K&MO=5dH$Y(hhHh2y-K8|XULpI_@BFLhc^dYyZ;RQd6ULnX% zY7XBrdX%kq;dvp(g8Ue4lb2A6TCi0~Be~{)e`OwVpB?PH2D#WOBIv*k9@h8svMjN%LB8=hT3X!a(GF&~^uI=HQRRDv3$W^b7s@-uyV zh0r)6|MU>DZWSsYRM^NkQI4_jJUxMR7lX9x9lUlU?B*HdJ=56ZweCUP$ZoY9rFF+p zujNrIgppL7LdhyaA;coEVs7#ao|(V$&G-5wg`mF4|60vrXX_&(76p9^7qVeblj~)T zDEamE)_Ys!wZ}cExSr6rOJIAGMbZ`|=1.0.11", - "node-static": ">=0.6.5", - "imagemagick": ">=0.1.3" - }, - "main": "server.js" -} diff --git a/jquery.upload/server/node/public/files/.gitignore b/jquery.upload/server/node/public/files/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/jquery.upload/server/node/public/files/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/jquery.upload/server/node/server.js b/jquery.upload/server/node/server.js deleted file mode 100644 index 5eb07a6..0000000 --- a/jquery.upload/server/node/server.js +++ /dev/null @@ -1,292 +0,0 @@ -#!/usr/bin/env node -/* - * jQuery File Upload Plugin Node.js Example 2.1.1 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global require, __dirname, unescape, console */ - -(function (port) { - 'use strict'; - var path = require('path'), - fs = require('fs'), - // Since Node 0.8, .existsSync() moved from path to fs: - _existsSync = fs.existsSync || path.existsSync, - formidable = require('formidable'), - nodeStatic = require('node-static'), - imageMagick = require('imagemagick'), - options = { - tmpDir: __dirname + '/tmp', - publicDir: __dirname + '/public', - uploadDir: __dirname + '/public/files', - uploadUrl: '/files/', - maxPostSize: 11000000000, // 11 GB - minFileSize: 1, - maxFileSize: 10000000000, // 10 GB - acceptFileTypes: /.+/i, - // Files not matched by this regular expression force a download dialog, - // to prevent executing any scripts in the context of the service domain: - inlineFileTypes: /\.(gif|jpe?g|png)$/i, - imageTypes: /\.(gif|jpe?g|png)$/i, - imageVersions: { - 'thumbnail': { - width: 80, - height: 80 - } - }, - accessControl: { - allowOrigin: '*', - allowMethods: 'OPTIONS, HEAD, GET, POST, PUT, DELETE', - allowHeaders: 'Content-Type, Content-Range, Content-Disposition' - }, - /* Uncomment and edit this section to provide the service via HTTPS: - ssl: { - key: fs.readFileSync('/Applications/XAMPP/etc/ssl.key/server.key'), - cert: fs.readFileSync('/Applications/XAMPP/etc/ssl.crt/server.crt') - }, - */ - nodeStatic: { - cache: 3600 // seconds to cache served files - } - }, - utf8encode = function (str) { - return unescape(encodeURIComponent(str)); - }, - fileServer = new nodeStatic.Server(options.publicDir, options.nodeStatic), - nameCountRegexp = /(?:(?: \(([\d]+)\))?(\.[^.]+))?$/, - nameCountFunc = function (s, index, ext) { - return ' (' + ((parseInt(index, 10) || 0) + 1) + ')' + (ext || ''); - }, - FileInfo = function (file) { - this.name = file.name; - this.size = file.size; - this.type = file.type; - this.deleteType = 'DELETE'; - }, - UploadHandler = function (req, res, callback) { - this.req = req; - this.res = res; - this.callback = callback; - }, - serve = function (req, res) { - res.setHeader( - 'Access-Control-Allow-Origin', - options.accessControl.allowOrigin - ); - res.setHeader( - 'Access-Control-Allow-Methods', - options.accessControl.allowMethods - ); - res.setHeader( - 'Access-Control-Allow-Headers', - options.accessControl.allowHeaders - ); - var handleResult = function (result, redirect) { - if (redirect) { - res.writeHead(302, { - 'Location': redirect.replace( - /%s/, - encodeURIComponent(JSON.stringify(result)) - ) - }); - res.end(); - } else { - res.writeHead(200, { - 'Content-Type': req.headers.accept - .indexOf('application/json') !== -1 ? - 'application/json' : 'text/plain' - }); - res.end(JSON.stringify(result)); - } - }, - setNoCacheHeaders = function () { - res.setHeader('Pragma', 'no-cache'); - res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); - res.setHeader('Content-Disposition', 'inline; filename="files.json"'); - }, - handler = new UploadHandler(req, res, handleResult); - switch (req.method) { - case 'OPTIONS': - res.end(); - break; - case 'HEAD': - case 'GET': - if (req.url === '/') { - setNoCacheHeaders(); - if (req.method === 'GET') { - handler.get(); - } else { - res.end(); - } - } else { - fileServer.serve(req, res); - } - break; - case 'POST': - setNoCacheHeaders(); - handler.post(); - break; - case 'DELETE': - handler.destroy(); - break; - default: - res.statusCode = 405; - res.end(); - } - }; - fileServer.respond = function (pathname, status, _headers, files, stat, req, res, finish) { - // Prevent browsers from MIME-sniffing the content-type: - _headers['X-Content-Type-Options'] = 'nosniff'; - if (!options.inlineFileTypes.test(files[0])) { - // Force a download dialog for unsafe file extensions: - _headers['Content-Type'] = 'application/octet-stream'; - _headers['Content-Disposition'] = 'attachment; filename="' + - utf8encode(path.basename(files[0])) + '"'; - } - nodeStatic.Server.prototype.respond - .call(this, pathname, status, _headers, files, stat, req, res, finish); - }; - FileInfo.prototype.validate = function () { - if (options.minFileSize && options.minFileSize > this.size) { - this.error = 'File is too small'; - } else if (options.maxFileSize && options.maxFileSize < this.size) { - this.error = 'File is too big'; - } else if (!options.acceptFileTypes.test(this.name)) { - this.error = 'Filetype not allowed'; - } - return !this.error; - }; - FileInfo.prototype.safeName = function () { - // Prevent directory traversal and creating hidden system files: - this.name = path.basename(this.name).replace(/^\.+/, ''); - // Prevent overwriting existing files: - while (_existsSync(options.uploadDir + '/' + this.name)) { - this.name = this.name.replace(nameCountRegexp, nameCountFunc); - } - }; - FileInfo.prototype.initUrls = function (req) { - if (!this.error) { - var that = this, - baseUrl = (options.ssl ? 'https:' : 'http:') + - '//' + req.headers.host + options.uploadUrl; - this.url = this.deleteUrl = baseUrl + encodeURIComponent(this.name); - Object.keys(options.imageVersions).forEach(function (version) { - if (_existsSync( - options.uploadDir + '/' + version + '/' + that.name - )) { - that[version + 'Url'] = baseUrl + version + '/' + - encodeURIComponent(that.name); - } - }); - } - }; - UploadHandler.prototype.get = function () { - var handler = this, - files = []; - fs.readdir(options.uploadDir, function (err, list) { - list.forEach(function (name) { - var stats = fs.statSync(options.uploadDir + '/' + name), - fileInfo; - if (stats.isFile() && name[0] !== '.') { - fileInfo = new FileInfo({ - name: name, - size: stats.size - }); - fileInfo.initUrls(handler.req); - files.push(fileInfo); - } - }); - handler.callback({files: files}); - }); - }; - UploadHandler.prototype.post = function () { - var handler = this, - form = new formidable.IncomingForm(), - tmpFiles = [], - files = [], - map = {}, - counter = 1, - redirect, - finish = function () { - counter -= 1; - if (!counter) { - files.forEach(function (fileInfo) { - fileInfo.initUrls(handler.req); - }); - handler.callback({files: files}, redirect); - } - }; - form.uploadDir = options.tmpDir; - form.on('fileBegin', function (name, file) { - tmpFiles.push(file.path); - var fileInfo = new FileInfo(file, handler.req, true); - fileInfo.safeName(); - map[path.basename(file.path)] = fileInfo; - files.push(fileInfo); - }).on('field', function (name, value) { - if (name === 'redirect') { - redirect = value; - } - }).on('file', function (name, file) { - var fileInfo = map[path.basename(file.path)]; - fileInfo.size = file.size; - if (!fileInfo.validate()) { - fs.unlink(file.path); - return; - } - fs.renameSync(file.path, options.uploadDir + '/' + fileInfo.name); - if (options.imageTypes.test(fileInfo.name)) { - Object.keys(options.imageVersions).forEach(function (version) { - counter += 1; - var opts = options.imageVersions[version]; - imageMagick.resize({ - width: opts.width, - height: opts.height, - srcPath: options.uploadDir + '/' + fileInfo.name, - dstPath: options.uploadDir + '/' + version + '/' + - fileInfo.name - }, finish); - }); - } - }).on('aborted', function () { - tmpFiles.forEach(function (file) { - fs.unlink(file); - }); - }).on('error', function (e) { - console.log(e); - }).on('progress', function (bytesReceived) { - if (bytesReceived > options.maxPostSize) { - handler.req.connection.destroy(); - } - }).on('end', finish).parse(handler.req); - }; - UploadHandler.prototype.destroy = function () { - var handler = this, - fileName; - if (handler.req.url.slice(0, options.uploadUrl.length) === options.uploadUrl) { - fileName = path.basename(decodeURIComponent(handler.req.url)); - if (fileName[0] !== '.') { - fs.unlink(options.uploadDir + '/' + fileName, function (ex) { - Object.keys(options.imageVersions).forEach(function (version) { - fs.unlink(options.uploadDir + '/' + version + '/' + fileName); - }); - handler.callback({success: !ex}); - }); - return; - } - } - handler.callback({success: false}); - }; - if (options.ssl) { - require('https').createServer(options.ssl, serve).listen(port); - } else { - require('http').createServer(serve).listen(port); - } -}(8888)); diff --git a/jquery.upload/server/node/tmp/.gitignore b/jquery.upload/server/node/tmp/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/jquery.upload/server/php/UploadHandler.php b/jquery.upload/server/php/UploadHandler.php deleted file mode 100644 index 66545b1..0000000 --- a/jquery.upload/server/php/UploadHandler.php +++ /dev/null @@ -1,1329 +0,0 @@ - 'The uploaded file exceeds the upload_max_filesize directive in php.ini', - 2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', - 3 => 'The uploaded file was only partially uploaded', - 4 => 'No file was uploaded', - 6 => 'Missing a temporary folder', - 7 => 'Failed to write file to disk', - 8 => 'A PHP extension stopped the file upload', - 'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini', - 'max_file_size' => 'File is too big', - 'min_file_size' => 'File is too small', - 'accept_file_types' => 'Filetype not allowed', - 'max_number_of_files' => 'Maximum number of files exceeded', - 'max_width' => 'Image exceeds maximum width', - 'min_width' => 'Image requires a minimum width', - 'max_height' => 'Image exceeds maximum height', - 'min_height' => 'Image requires a minimum height', - 'abort' => 'File upload aborted', - 'image_resize' => 'Failed to resize image' - ); - - protected $image_objects = array(); - - function __construct($options = null, $initialize = true, $error_messages = null) { - $this->options = array( - 'script_url' => $this->get_full_url().'/', - 'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/', - 'upload_url' => $this->get_full_url().'/files/', - 'user_dirs' => false, - 'mkdir_mode' => 0755, - 'param_name' => 'files', - // Set the following option to 'POST', if your server does not support - // DELETE requests. This is a parameter sent to the client: - 'delete_type' => 'DELETE', - 'access_control_allow_origin' => '*', - 'access_control_allow_credentials' => false, - 'access_control_allow_methods' => array( - 'OPTIONS', - 'HEAD', - 'GET', - 'POST', - 'PUT', - 'PATCH', - 'DELETE' - ), - 'access_control_allow_headers' => array( - 'Content-Type', - 'Content-Range', - 'Content-Disposition' - ), - // Enable to provide file downloads via GET requests to the PHP script: - // 1. Set to 1 to download files via readfile method through PHP - // 2. Set to 2 to send a X-Sendfile header for lighttpd/Apache - // 3. Set to 3 to send a X-Accel-Redirect header for nginx - // If set to 2 or 3, adjust the upload_url option to the base path of - // the redirect parameter, e.g. '/files/'. - 'download_via_php' => false, - // Read files in chunks to avoid memory limits when download_via_php - // is enabled, set to 0 to disable chunked reading of files: - 'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB - // Defines which files can be displayed inline when downloaded: - 'inline_file_types' => '/\.(gif|jpe?g|png)$/i', - // Defines which files (based on their names) are accepted for upload: - 'accept_file_types' => '/.+$/i', - // The php.ini settings upload_max_filesize and post_max_size - // take precedence over the following max_file_size setting: - 'max_file_size' => null, - 'min_file_size' => 1, - // The maximum number of files for the upload directory: - 'max_number_of_files' => null, - // Defines which files are handled as image files: - 'image_file_types' => '/\.(gif|jpe?g|png)$/i', - // Image resolution restrictions: - 'max_width' => null, - 'max_height' => null, - 'min_width' => 1, - 'min_height' => 1, - // Set the following option to false to enable resumable uploads: - 'discard_aborted_uploads' => true, - // Set to 0 to use the GD library to scale and orient images, - // set to 1 to use imagick (if installed, falls back to GD), - // set to 2 to use the ImageMagick convert binary directly: - 'image_library' => 1, - // Uncomment the following to define an array of resource limits - // for imagick: - /* - 'imagick_resource_limits' => array( - imagick::RESOURCETYPE_MAP => 32, - imagick::RESOURCETYPE_MEMORY => 32 - ), - */ - // Command or path for to the ImageMagick convert binary: - 'convert_bin' => 'convert', - // Uncomment the following to add parameters in front of each - // ImageMagick convert call (the limit constraints seem only - // to have an effect if put in front): - /* - 'convert_params' => '-limit memory 32MiB -limit map 32MiB', - */ - // Command or path for to the ImageMagick identify binary: - 'identify_bin' => 'identify', - 'image_versions' => array( - // The empty image version key defines options for the original image: - '' => array( - // Automatically rotate images based on EXIF meta data: - 'auto_orient' => true - ), - // Uncomment the following to create medium sized images: - /* - 'medium' => array( - 'max_width' => 800, - 'max_height' => 600 - ), - */ - 'thumbnail' => array( - // Uncomment the following to use a defined directory for the thumbnails - // instead of a subdirectory based on the version identifier. - // Make sure that this directory doesn't allow execution of files if you - // don't pose any restrictions on the type of uploaded files, e.g. by - // copying the .htaccess file from the files directory for Apache: - //'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/thumb/', - //'upload_url' => $this->get_full_url().'/thumb/', - // Uncomment the following to force the max - // dimensions and e.g. create square thumbnails: - //'crop' => true, - 'max_width' => 80, - 'max_height' => 80 - ) - ) - ); - if ($options) { - $this->options = $options + $this->options; - } - if ($error_messages) { - $this->error_messages = $error_messages + $this->error_messages; - } - if ($initialize) { - $this->initialize(); - } - } - - protected function initialize() { - switch ($this->get_server_var('REQUEST_METHOD')) { - case 'OPTIONS': - case 'HEAD': - $this->head(); - break; - case 'GET': - $this->get(); - break; - case 'PATCH': - case 'PUT': - case 'POST': - $this->post(); - break; - case 'DELETE': - $this->delete(); - break; - default: - $this->header('HTTP/1.1 405 Method Not Allowed'); - } - } - - protected function get_full_url() { - $https = !empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'on') === 0; - return - ($https ? 'https://' : 'http://'). - (!empty($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : ''). - (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME']. - ($https && $_SERVER['SERVER_PORT'] === 443 || - $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))). - substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/')); - } - - protected function get_user_id() { - @session_start(); - return session_id(); - } - - protected function get_user_path() { - if ($this->options['user_dirs']) { - return $this->get_user_id().'/'; - } - return ''; - } - - protected function get_upload_path($file_name = null, $version = null) { - $file_name = $file_name ? $file_name : ''; - if (empty($version)) { - $version_path = ''; - } else { - $version_dir = @$this->options['image_versions'][$version]['upload_dir']; - if ($version_dir) { - return $version_dir.$this->get_user_path().$file_name; - } - $version_path = $version.'/'; - } - return $this->options['upload_dir'].$this->get_user_path() - .$version_path.$file_name; - } - - protected function get_query_separator($url) { - return strpos($url, '?') === false ? '?' : '&'; - } - - protected function get_download_url($file_name, $version = null, $direct = false) { - if (!$direct && $this->options['download_via_php']) { - $url = $this->options['script_url'] - .$this->get_query_separator($this->options['script_url']) - .$this->get_singular_param_name() - .'='.rawurlencode($file_name); - if ($version) { - $url .= '&version='.rawurlencode($version); - } - return $url.'&download=1'; - } - if (empty($version)) { - $version_path = ''; - } else { - $version_url = @$this->options['image_versions'][$version]['upload_url']; - if ($version_url) { - return $version_url.$this->get_user_path().rawurlencode($file_name); - } - $version_path = rawurlencode($version).'/'; - } - return $this->options['upload_url'].$this->get_user_path() - .$version_path.rawurlencode($file_name); - } - - protected function set_additional_file_properties($file) { - $file->deleteUrl = $this->options['script_url'] - .$this->get_query_separator($this->options['script_url']) - .$this->get_singular_param_name() - .'='.rawurlencode($file->name); - $file->deleteType = $this->options['delete_type']; - if ($file->deleteType !== 'DELETE') { - $file->deleteUrl .= '&_method=DELETE'; - } - if ($this->options['access_control_allow_credentials']) { - $file->deleteWithCredentials = true; - } - } - - // Fix for overflowing signed 32 bit integers, - // works for sizes up to 2^32-1 bytes (4 GiB - 1): - protected function fix_integer_overflow($size) { - if ($size < 0) { - $size += 2.0 * (PHP_INT_MAX + 1); - } - return $size; - } - - protected function get_file_size($file_path, $clear_stat_cache = false) { - if ($clear_stat_cache) { - if (version_compare(PHP_VERSION, '5.3.0') >= 0) { - clearstatcache(true, $file_path); - } else { - clearstatcache(); - } - } - return $this->fix_integer_overflow(filesize($file_path)); - } - - protected function is_valid_file_object($file_name) { - $file_path = $this->get_upload_path($file_name); - if (is_file($file_path) && $file_name[0] !== '.') { - return true; - } - return false; - } - - protected function get_file_object($file_name) { - if ($this->is_valid_file_object($file_name)) { - $file = new stdClass(); - $file->name = $file_name; - $file->size = $this->get_file_size( - $this->get_upload_path($file_name) - ); - $file->url = $this->get_download_url($file->name); - foreach($this->options['image_versions'] as $version => $options) { - if (!empty($version)) { - if (is_file($this->get_upload_path($file_name, $version))) { - $file->{$version.'Url'} = $this->get_download_url( - $file->name, - $version - ); - } - } - } - $this->set_additional_file_properties($file); - return $file; - } - return null; - } - - protected function get_file_objects($iteration_method = 'get_file_object') { - $upload_dir = $this->get_upload_path(); - if (!is_dir($upload_dir)) { - return array(); - } - return array_values(array_filter(array_map( - array($this, $iteration_method), - scandir($upload_dir) - ))); - } - - protected function count_file_objects() { - return count($this->get_file_objects('is_valid_file_object')); - } - - protected function get_error_message($error) { - return array_key_exists($error, $this->error_messages) ? - $this->error_messages[$error] : $error; - } - - function get_config_bytes($val) { - $val = trim($val); - $last = strtolower($val[strlen($val)-1]); - switch($last) { - case 'g': - $val *= 1024; - case 'm': - $val *= 1024; - case 'k': - $val *= 1024; - } - return $this->fix_integer_overflow($val); - } - - protected function validate($uploaded_file, $file, $error, $index) { - if ($error) { - $file->error = $this->get_error_message($error); - return false; - } - $content_length = $this->fix_integer_overflow(intval( - $this->get_server_var('CONTENT_LENGTH') - )); - $post_max_size = $this->get_config_bytes(ini_get('post_max_size')); - if ($post_max_size && ($content_length > $post_max_size)) { - $file->error = $this->get_error_message('post_max_size'); - return false; - } - if (!preg_match($this->options['accept_file_types'], $file->name)) { - $file->error = $this->get_error_message('accept_file_types'); - return false; - } - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - $file_size = $this->get_file_size($uploaded_file); - } else { - $file_size = $content_length; - } - if ($this->options['max_file_size'] && ( - $file_size > $this->options['max_file_size'] || - $file->size > $this->options['max_file_size']) - ) { - $file->error = $this->get_error_message('max_file_size'); - return false; - } - if ($this->options['min_file_size'] && - $file_size < $this->options['min_file_size']) { - $file->error = $this->get_error_message('min_file_size'); - return false; - } - if (is_int($this->options['max_number_of_files']) && ( - $this->count_file_objects() >= $this->options['max_number_of_files']) - ) { - $file->error = $this->get_error_message('max_number_of_files'); - return false; - } - $max_width = @$this->options['max_width']; - $max_height = @$this->options['max_height']; - $min_width = @$this->options['min_width']; - $min_height = @$this->options['min_height']; - if (($max_width || $max_height || $min_width || $min_height)) { - list($img_width, $img_height) = $this->get_image_size($uploaded_file); - } - if (!empty($img_width)) { - if ($max_width && $img_width > $max_width) { - $file->error = $this->get_error_message('max_width'); - return false; - } - if ($max_height && $img_height > $max_height) { - $file->error = $this->get_error_message('max_height'); - return false; - } - if ($min_width && $img_width < $min_width) { - $file->error = $this->get_error_message('min_width'); - return false; - } - if ($min_height && $img_height < $min_height) { - $file->error = $this->get_error_message('min_height'); - return false; - } - } - return true; - } - - protected function upcount_name_callback($matches) { - $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; - $ext = isset($matches[2]) ? $matches[2] : ''; - return ' ('.$index.')'.$ext; - } - - protected function upcount_name($name) { - return preg_replace_callback( - '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', - array($this, 'upcount_name_callback'), - $name, - 1 - ); - } - - protected function get_unique_filename($file_path, $name, $size, $type, $error, - $index, $content_range) { - while(is_dir($this->get_upload_path($name))) { - $name = $this->upcount_name($name); - } - // Keep an existing filename if this is part of a chunked upload: - $uploaded_bytes = $this->fix_integer_overflow(intval($content_range[1])); - while(is_file($this->get_upload_path($name))) { - if ($uploaded_bytes === $this->get_file_size( - $this->get_upload_path($name))) { - break; - } - $name = $this->upcount_name($name); - } - return $name; - } - - protected function trim_file_name($file_path, $name, $size, $type, $error, - $index, $content_range) { - // Remove path information and dots around the filename, to prevent uploading - // into different directories or replacing hidden system files. - // Also remove control characters and spaces (\x00..\x20) around the filename: - $name = trim(basename(stripslashes($name)), ".\x00..\x20"); - // Use a timestamp for empty filenames: - if (!$name) { - $name = str_replace('.', '-', microtime(true)); - } - // Add missing file extension for known image types: - if (strpos($name, '.') === false && - preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { - $name .= '.'.$matches[1]; - } - if (function_exists('exif_imagetype')) { - switch(@exif_imagetype($file_path)){ - case IMAGETYPE_JPEG: - $extensions = array('jpg', 'jpeg'); - break; - case IMAGETYPE_PNG: - $extensions = array('png'); - break; - case IMAGETYPE_GIF: - $extensions = array('gif'); - break; - } - // Adjust incorrect image file extensions: - if (!empty($extensions)) { - $parts = explode('.', $name); - $extIndex = count($parts) - 1; - $ext = strtolower(@$parts[$extIndex]); - if (!in_array($ext, $extensions)) { - $parts[$extIndex] = $extensions[0]; - $name = implode('.', $parts); - } - } - } - return $name; - } - - protected function get_file_name($file_path, $name, $size, $type, $error, - $index, $content_range) { - return $this->get_unique_filename( - $file_path, - $this->trim_file_name($file_path, $name, $size, $type, $error, - $index, $content_range), - $size, - $type, - $error, - $index, - $content_range - ); - } - - protected function handle_form_data($file, $index) { - // Handle form data, e.g. $_REQUEST['description'][$index] - } - - protected function get_scaled_image_file_paths($file_name, $version) { - $file_path = $this->get_upload_path($file_name); - if (!empty($version)) { - $version_dir = $this->get_upload_path(null, $version); - if (!is_dir($version_dir)) { - mkdir($version_dir, $this->options['mkdir_mode'], true); - } - $new_file_path = $version_dir.'/'.$file_name; - } else { - $new_file_path = $file_path; - } - return array($file_path, $new_file_path); - } - - protected function gd_get_image_object($file_path, $func, $no_cache = false) { - if (empty($this->image_objects[$file_path]) || $no_cache) { - $this->gd_destroy_image_object($file_path); - $this->image_objects[$file_path] = $func($file_path); - } - return $this->image_objects[$file_path]; - } - - protected function gd_set_image_object($file_path, $image) { - $this->gd_destroy_image_object($file_path); - $this->image_objects[$file_path] = $image; - } - - protected function gd_destroy_image_object($file_path) { - $image = @$this->image_objects[$file_path]; - return $image && imagedestroy($image); - } - - protected function gd_imageflip($image, $mode) { - if (function_exists('imageflip')) { - return imageflip($image, $mode); - } - $new_width = $src_width = imagesx($image); - $new_height = $src_height = imagesy($image); - $new_img = imagecreatetruecolor($new_width, $new_height); - $src_x = 0; - $src_y = 0; - switch ($mode) { - case '1': // flip on the horizontal axis - $src_y = $new_height - 1; - $src_height = -$new_height; - break; - case '2': // flip on the vertical axis - $src_x = $new_width - 1; - $src_width = -$new_width; - break; - case '3': // flip on both axes - $src_y = $new_height - 1; - $src_height = -$new_height; - $src_x = $new_width - 1; - $src_width = -$new_width; - break; - default: - return $image; - } - imagecopyresampled( - $new_img, - $image, - 0, - 0, - $src_x, - $src_y, - $new_width, - $new_height, - $src_width, - $src_height - ); - return $new_img; - } - - protected function gd_orient_image($file_path, $src_img) { - if (!function_exists('exif_read_data')) { - return false; - } - $exif = @exif_read_data($file_path); - if ($exif === false) { - return false; - } - $orientation = intval(@$exif['Orientation']); - if ($orientation < 2 || $orientation > 8) { - return false; - } - switch ($orientation) { - case 2: - $new_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2 - ); - break; - case 3: - $new_img = imagerotate($src_img, 180, 0); - break; - case 4: - $new_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1 - ); - break; - case 5: - $tmp_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1 - ); - $new_img = imagerotate($tmp_img, 270, 0); - imagedestroy($tmp_img); - break; - case 6: - $new_img = imagerotate($src_img, 270, 0); - break; - case 7: - $tmp_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2 - ); - $new_img = imagerotate($tmp_img, 270, 0); - imagedestroy($tmp_img); - break; - case 8: - $new_img = imagerotate($src_img, 90, 0); - break; - default: - return false; - } - $this->gd_set_image_object($file_path, $new_img); - return true; - } - - protected function gd_create_scaled_image($file_name, $version, $options) { - if (!function_exists('imagecreatetruecolor')) { - error_log('Function not found: imagecreatetruecolor'); - return false; - } - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $type = strtolower(substr(strrchr($file_name, '.'), 1)); - switch ($type) { - case 'jpg': - case 'jpeg': - $src_func = 'imagecreatefromjpeg'; - $write_func = 'imagejpeg'; - $image_quality = isset($options['jpeg_quality']) ? - $options['jpeg_quality'] : 75; - break; - case 'gif': - $src_func = 'imagecreatefromgif'; - $write_func = 'imagegif'; - $image_quality = null; - break; - case 'png': - $src_func = 'imagecreatefrompng'; - $write_func = 'imagepng'; - $image_quality = isset($options['png_quality']) ? - $options['png_quality'] : 9; - break; - default: - return false; - } - $src_img = $this->gd_get_image_object( - $file_path, - $src_func, - !empty($options['no_cache']) - ); - $image_oriented = false; - if (!empty($options['auto_orient']) && $this->gd_orient_image( - $file_path, - $src_img - )) { - $image_oriented = true; - $src_img = $this->gd_get_image_object( - $file_path, - $src_func - ); - } - $max_width = $img_width = imagesx($src_img); - $max_height = $img_height = imagesy($src_img); - if (!empty($options['max_width'])) { - $max_width = $options['max_width']; - } - if (!empty($options['max_height'])) { - $max_height = $options['max_height']; - } - $scale = min( - $max_width / $img_width, - $max_height / $img_height - ); - if ($scale >= 1) { - if ($image_oriented) { - return $write_func($src_img, $new_file_path, $image_quality); - } - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - if (empty($options['crop'])) { - $new_width = $img_width * $scale; - $new_height = $img_height * $scale; - $dst_x = 0; - $dst_y = 0; - $new_img = imagecreatetruecolor($new_width, $new_height); - } else { - if (($img_width / $img_height) >= ($max_width / $max_height)) { - $new_width = $img_width / ($img_height / $max_height); - $new_height = $max_height; - } else { - $new_width = $max_width; - $new_height = $img_height / ($img_width / $max_width); - } - $dst_x = 0 - ($new_width - $max_width) / 2; - $dst_y = 0 - ($new_height - $max_height) / 2; - $new_img = imagecreatetruecolor($max_width, $max_height); - } - // Handle transparency in GIF and PNG images: - switch ($type) { - case 'gif': - case 'png': - imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0)); - case 'png': - imagealphablending($new_img, false); - imagesavealpha($new_img, true); - break; - } - $success = imagecopyresampled( - $new_img, - $src_img, - $dst_x, - $dst_y, - 0, - 0, - $new_width, - $new_height, - $img_width, - $img_height - ) && $write_func($new_img, $new_file_path, $image_quality); - $this->gd_set_image_object($file_path, $new_img); - return $success; - } - - protected function imagick_get_image_object($file_path, $no_cache = false) { - if (empty($this->image_objects[$file_path]) || $no_cache) { - $this->imagick_destroy_image_object($file_path); - $image = new Imagick(); - if (!empty($this->options['imagick_resource_limits'])) { - foreach ($this->options['imagick_resource_limits'] as $type => $limit) { - $image->setResourceLimit($type, $limit); - } - } - $image->readImage($file_path); - $this->image_objects[$file_path] = $image; - } - return $this->image_objects[$file_path]; - } - - protected function imagick_set_image_object($file_path, $image) { - $this->imagick_destroy_image_object($file_path); - $this->image_objects[$file_path] = $image; - } - - protected function imagick_destroy_image_object($file_path) { - $image = @$this->image_objects[$file_path]; - return $image && $image->destroy(); - } - - protected function imagick_orient_image($image) { - $orientation = $image->getImageOrientation(); - $background = new ImagickPixel('none'); - switch ($orientation) { - case imagick::ORIENTATION_TOPRIGHT: // 2 - $image->flopImage(); // horizontal flop around y-axis - break; - case imagick::ORIENTATION_BOTTOMRIGHT: // 3 - $image->rotateImage($background, 180); - break; - case imagick::ORIENTATION_BOTTOMLEFT: // 4 - $image->flipImage(); // vertical flip around x-axis - break; - case imagick::ORIENTATION_LEFTTOP: // 5 - $image->flopImage(); // horizontal flop around y-axis - $image->rotateImage($background, 270); - break; - case imagick::ORIENTATION_RIGHTTOP: // 6 - $image->rotateImage($background, 90); - break; - case imagick::ORIENTATION_RIGHTBOTTOM: // 7 - $image->flipImage(); // vertical flip around x-axis - $image->rotateImage($background, 270); - break; - case imagick::ORIENTATION_LEFTBOTTOM: // 8 - $image->rotateImage($background, 270); - break; - default: - return false; - } - $image->setImageOrientation(imagick::ORIENTATION_TOPLEFT); // 1 - return true; - } - - protected function imagick_create_scaled_image($file_name, $version, $options) { - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $image = $this->imagick_get_image_object( - $file_path, - !empty($options['no_cache']) - ); - if ($image->getImageFormat() === 'GIF') { - // Handle animated GIFs: - $images = $image->coalesceImages(); - foreach ($images as $frame) { - $image = $frame; - $this->imagick_set_image_object($file_name, $image); - break; - } - } - $image_oriented = false; - if (!empty($options['auto_orient'])) { - $image_oriented = $this->imagick_orient_image($image); - } - $new_width = $max_width = $img_width = $image->getImageWidth(); - $new_height = $max_height = $img_height = $image->getImageHeight(); - if (!empty($options['max_width'])) { - $new_width = $max_width = $options['max_width']; - } - if (!empty($options['max_height'])) { - $new_height = $max_height = $options['max_height']; - } - if (!($image_oriented || $max_width < $img_width || $max_height < $img_height)) { - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - $crop = !empty($options['crop']); - if ($crop) { - $x = 0; - $y = 0; - if (($img_width / $img_height) >= ($max_width / $max_height)) { - $new_width = 0; // Enables proportional scaling based on max_height - $x = ($img_width / ($img_height / $max_height) - $max_width) / 2; - } else { - $new_height = 0; // Enables proportional scaling based on max_width - $y = ($img_height / ($img_width / $max_width) - $max_height) / 2; - } - } - $success = $image->resizeImage( - $new_width, - $new_height, - isset($options['filter']) ? $options['filter'] : imagick::FILTER_LANCZOS, - isset($options['blur']) ? $options['blur'] : 1, - $new_width && $new_height // fit image into constraints if not to be cropped - ); - if ($success && $crop) { - $success = $image->cropImage( - $max_width, - $max_height, - $x, - $y - ); - if ($success) { - $success = $image->setImagePage($max_width, $max_height, 0, 0); - } - } - $type = strtolower(substr(strrchr($file_name, '.'), 1)); - switch ($type) { - case 'jpg': - case 'jpeg': - if (!empty($options['jpeg_quality'])) { - $image->setImageCompression(Imagick::COMPRESSION_JPEG); - $image->setImageCompressionQuality($options['jpeg_quality']); - } - break; - } - if (!empty($options['strip'])) { - $image->stripImage(); - } - return $success && $image->writeImage($new_file_path); - } - - protected function imagemagick_create_scaled_image($file_name, $version, $options) { - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $resize = @$options['max_width'] - .(empty($options['max_height']) ? '' : 'x'.$options['max_height']); - if (!$resize && empty($options['auto_orient'])) { - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - $cmd = $this->options['convert_bin']; - if (!empty($this->options['convert_params'])) { - $cmd .= ' '.$this->options['convert_params']; - } - $cmd .= ' '.escapeshellarg($file_path); - if (!empty($options['auto_orient'])) { - $cmd .= ' -auto-orient'; - } - if ($resize) { - // Handle animated GIFs: - $cmd .= ' -coalesce'; - if (empty($options['crop'])) { - $cmd .= ' -resize '.escapeshellarg($resize.'>'); - } else { - $cmd .= ' -resize '.escapeshellarg($resize.'^'); - $cmd .= ' -gravity center'; - $cmd .= ' -crop '.escapeshellarg($resize.'+0+0'); - } - // Make sure the page dimensions are correct (fixes offsets of animated GIFs): - $cmd .= ' +repage'; - } - if (!empty($options['convert_params'])) { - $cmd .= ' '.$options['convert_params']; - } - $cmd .= ' '.escapeshellarg($new_file_path); - exec($cmd, $output, $error); - if ($error) { - error_log(implode('\n', $output)); - return false; - } - return true; - } - - protected function get_image_size($file_path) { - if ($this->options['image_library']) { - if (extension_loaded('imagick')) { - $image = new Imagick(); - try { - if (@$image->pingImage($file_path)) { - $dimensions = array($image->getImageWidth(), $image->getImageHeight()); - $image->destroy(); - return $dimensions; - } - return false; - } catch (Exception $e) { - error_log($e->getMessage()); - } - } - if ($this->options['image_library'] === 2) { - $cmd = $this->options['identify_bin']; - $cmd .= ' -ping '.escapeshellarg($file_path); - exec($cmd, $output, $error); - if (!$error && !empty($output)) { - // image.jpg JPEG 1920x1080 1920x1080+0+0 8-bit sRGB 465KB 0.000u 0:00.000 - $infos = preg_split('/\s+/', $output[0]); - $dimensions = preg_split('/x/', $infos[2]); - return $dimensions; - } - return false; - } - } - if (!function_exists('getimagesize')) { - error_log('Function not found: getimagesize'); - return false; - } - return @getimagesize($file_path); - } - - protected function create_scaled_image($file_name, $version, $options) { - if ($this->options['image_library'] === 2) { - return $this->imagemagick_create_scaled_image($file_name, $version, $options); - } - if ($this->options['image_library'] && extension_loaded('imagick')) { - return $this->imagick_create_scaled_image($file_name, $version, $options); - } - return $this->gd_create_scaled_image($file_name, $version, $options); - } - - protected function destroy_image_object($file_path) { - if ($this->options['image_library'] && extension_loaded('imagick')) { - return $this->imagick_destroy_image_object($file_path); - } - } - - protected function is_valid_image_file($file_path) { - if (!preg_match($this->options['image_file_types'], $file_path)) { - return false; - } - if (function_exists('exif_imagetype')) { - return @exif_imagetype($file_path); - } - $image_info = $this->get_image_size($file_path); - return $image_info && $image_info[0] && $image_info[1]; - } - - protected function handle_image_file($file_path, $file) { - $failed_versions = array(); - foreach($this->options['image_versions'] as $version => $options) { - if ($this->create_scaled_image($file->name, $version, $options)) { - if (!empty($version)) { - $file->{$version.'Url'} = $this->get_download_url( - $file->name, - $version - ); - } else { - $file->size = $this->get_file_size($file_path, true); - } - } else { - $failed_versions[] = $version ? $version : 'original'; - } - } - if (count($failed_versions)) { - $file->error = $this->get_error_message('image_resize') - .' ('.implode($failed_versions,', ').')'; - } - // Free memory: - $this->destroy_image_object($file_path); - } - - protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, - $index = null, $content_range = null) { - $file = new stdClass(); - $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, - $index, $content_range); - $file->size = $this->fix_integer_overflow(intval($size)); - $file->type = $type; - if ($this->validate($uploaded_file, $file, $error, $index)) { - $this->handle_form_data($file, $index); - $upload_dir = $this->get_upload_path(); - if (!is_dir($upload_dir)) { - mkdir($upload_dir, $this->options['mkdir_mode'], true); - } - $file_path = $this->get_upload_path($file->name); - $append_file = $content_range && is_file($file_path) && - $file->size > $this->get_file_size($file_path); - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - // multipart/formdata uploads (POST method uploads) - if ($append_file) { - file_put_contents( - $file_path, - fopen($uploaded_file, 'r'), - FILE_APPEND - ); - } else { - move_uploaded_file($uploaded_file, $file_path); - } - } else { - // Non-multipart uploads (PUT method support) - file_put_contents( - $file_path, - fopen('php://input', 'r'), - $append_file ? FILE_APPEND : 0 - ); - } - $file_size = $this->get_file_size($file_path, $append_file); - if ($file_size === $file->size) { - $file->url = $this->get_download_url($file->name); - if ($this->is_valid_image_file($file_path)) { - $this->handle_image_file($file_path, $file); - } - } else { - $file->size = $file_size; - if (!$content_range && $this->options['discard_aborted_uploads']) { - unlink($file_path); - $file->error = $this->get_error_message('abort'); - } - } - $this->set_additional_file_properties($file); - } - return $file; - } - - protected function readfile($file_path) { - $file_size = $this->get_file_size($file_path); - $chunk_size = $this->options['readfile_chunk_size']; - if ($chunk_size && $file_size > $chunk_size) { - $handle = fopen($file_path, 'rb'); - while (!feof($handle)) { - echo fread($handle, $chunk_size); - ob_flush(); - flush(); - } - fclose($handle); - return $file_size; - } - return readfile($file_path); - } - - protected function body($str) { - echo $str; - } - - protected function header($str) { - header($str); - } - - protected function get_server_var($id) { - return isset($_SERVER[$id]) ? $_SERVER[$id] : ''; - } - - protected function generate_response($content, $print_response = true) { - if ($print_response) { - $json = json_encode($content); - $redirect = isset($_REQUEST['redirect']) ? - stripslashes($_REQUEST['redirect']) : null; - if ($redirect) { - $this->header('Location: '.sprintf($redirect, rawurlencode($json))); - return; - } - $this->head(); - if ($this->get_server_var('HTTP_CONTENT_RANGE')) { - $files = isset($content[$this->options['param_name']]) ? - $content[$this->options['param_name']] : null; - if ($files && is_array($files) && is_object($files[0]) && $files[0]->size) { - $this->header('Range: 0-'.( - $this->fix_integer_overflow(intval($files[0]->size)) - 1 - )); - } - } - $this->body($json); - } - return $content; - } - - protected function get_version_param() { - return isset($_GET['version']) ? basename(stripslashes($_GET['version'])) : null; - } - - protected function get_singular_param_name() { - return substr($this->options['param_name'], 0, -1); - } - - protected function get_file_name_param() { - $name = $this->get_singular_param_name(); - return isset($_GET[$name]) ? basename(stripslashes($_GET[$name])) : null; - } - - protected function get_file_names_params() { - $params = isset($_GET[$this->options['param_name']]) ? - $_GET[$this->options['param_name']] : array(); - foreach ($params as $key => $value) { - $params[$key] = basename(stripslashes($value)); - } - return $params; - } - - protected function get_file_type($file_path) { - switch (strtolower(pathinfo($file_path, PATHINFO_EXTENSION))) { - case 'jpeg': - case 'jpg': - return 'image/jpeg'; - case 'png': - return 'image/png'; - case 'gif': - return 'image/gif'; - default: - return ''; - } - } - - protected function download() { - switch ($this->options['download_via_php']) { - case 1: - $redirect_header = null; - break; - case 2: - $redirect_header = 'X-Sendfile'; - break; - case 3: - $redirect_header = 'X-Accel-Redirect'; - break; - default: - return $this->header('HTTP/1.1 403 Forbidden'); - } - $file_name = $this->get_file_name_param(); - if (!$this->is_valid_file_object($file_name)) { - return $this->header('HTTP/1.1 404 Not Found'); - } - if ($redirect_header) { - return $this->header( - $redirect_header.': '.$this->get_download_url( - $file_name, - $this->get_version_param(), - true - ) - ); - } - $file_path = $this->get_upload_path($file_name, $this->get_version_param()); - // Prevent browsers from MIME-sniffing the content-type: - $this->header('X-Content-Type-Options: nosniff'); - if (!preg_match($this->options['inline_file_types'], $file_name)) { - $this->header('Content-Type: application/octet-stream'); - $this->header('Content-Disposition: attachment; filename="'.$file_name.'"'); - } else { - $this->header('Content-Type: '.$this->get_file_type($file_path)); - $this->header('Content-Disposition: inline; filename="'.$file_name.'"'); - } - $this->header('Content-Length: '.$this->get_file_size($file_path)); - $this->header('Last-Modified: '.gmdate('D, d M Y H:i:s T', filemtime($file_path))); - $this->readfile($file_path); - } - - protected function send_content_type_header() { - $this->header('Vary: Accept'); - if (strpos($this->get_server_var('HTTP_ACCEPT'), 'application/json') !== false) { - $this->header('Content-type: application/json'); - } else { - $this->header('Content-type: text/plain'); - } - } - - protected function send_access_control_headers() { - $this->header('Access-Control-Allow-Origin: '.$this->options['access_control_allow_origin']); - $this->header('Access-Control-Allow-Credentials: ' - .($this->options['access_control_allow_credentials'] ? 'true' : 'false')); - $this->header('Access-Control-Allow-Methods: ' - .implode(', ', $this->options['access_control_allow_methods'])); - $this->header('Access-Control-Allow-Headers: ' - .implode(', ', $this->options['access_control_allow_headers'])); - } - - public function head() { - $this->header('Pragma: no-cache'); - $this->header('Cache-Control: no-store, no-cache, must-revalidate'); - $this->header('Content-Disposition: inline; filename="files.json"'); - // Prevent Internet Explorer from MIME-sniffing the content-type: - $this->header('X-Content-Type-Options: nosniff'); - if ($this->options['access_control_allow_origin']) { - $this->send_access_control_headers(); - } - $this->send_content_type_header(); - } - - public function get($print_response = true) { - if ($print_response && isset($_GET['download'])) { - return $this->download(); - } - $file_name = $this->get_file_name_param(); - if ($file_name) { - $response = array( - $this->get_singular_param_name() => $this->get_file_object($file_name) - ); - } else { - $response = array( - $this->options['param_name'] => $this->get_file_objects() - ); - } - return $this->generate_response($response, $print_response); - } - - public function post($print_response = true) { - if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') { - return $this->delete($print_response); - } - $upload = isset($_FILES[$this->options['param_name']]) ? - $_FILES[$this->options['param_name']] : null; - // Parse the Content-Disposition header, if available: - $file_name = $this->get_server_var('HTTP_CONTENT_DISPOSITION') ? - rawurldecode(preg_replace( - '/(^[^"]+")|("$)/', - '', - $this->get_server_var('HTTP_CONTENT_DISPOSITION') - )) : null; - // Parse the Content-Range header, which has the following form: - // Content-Range: bytes 0-524287/2000000 - $content_range = $this->get_server_var('HTTP_CONTENT_RANGE') ? - preg_split('/[^0-9]+/', $this->get_server_var('HTTP_CONTENT_RANGE')) : null; - $size = $content_range ? $content_range[3] : null; - $files = array(); - if ($upload && is_array($upload['tmp_name'])) { - // param_name is an array identifier like "files[]", - // $_FILES is a multi-dimensional array: - foreach ($upload['tmp_name'] as $index => $value) { - $files[] = $this->handle_file_upload( - $upload['tmp_name'][$index], - $file_name ? $file_name : $upload['name'][$index], - $size ? $size : $upload['size'][$index], - $upload['type'][$index], - $upload['error'][$index], - $index, - $content_range - ); - } - } else { - // param_name is a single object identifier like "file", - // $_FILES is a one-dimensional array: - $files[] = $this->handle_file_upload( - isset($upload['tmp_name']) ? $upload['tmp_name'] : null, - $file_name ? $file_name : (isset($upload['name']) ? - $upload['name'] : null), - $size ? $size : (isset($upload['size']) ? - $upload['size'] : $this->get_server_var('CONTENT_LENGTH')), - isset($upload['type']) ? - $upload['type'] : $this->get_server_var('CONTENT_TYPE'), - isset($upload['error']) ? $upload['error'] : null, - null, - $content_range - ); - } - return $this->generate_response( - array($this->options['param_name'] => $files), - $print_response - ); - } - - public function delete($print_response = true) { - $file_names = $this->get_file_names_params(); - if (empty($file_names)) { - $file_names = array($this->get_file_name_param()); - } - $response = array(); - foreach($file_names as $file_name) { - $file_path = $this->get_upload_path($file_name); - $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); - if ($success) { - foreach($this->options['image_versions'] as $version => $options) { - if (!empty($version)) { - $file = $this->get_upload_path($file_name, $version); - if (is_file($file)) { - unlink($file); - } - } - } - } - $response[$file_name] = $success; - } - return $this->generate_response($response, $print_response); - } - -} diff --git a/jquery.upload/server/php/fil/avatar1.jpg b/jquery.upload/server/php/fil/avatar1.jpg deleted file mode 100644 index 2f580c1424ada64bba996023d249f146bb9ffdce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14793 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 z 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 diff --git a/jquery.upload/server/php/fil/thumbnail/avatar1.jpg b/jquery.upload/server/php/fil/thumbnail/avatar1.jpg deleted file mode 100644 index a1bcaf5b49674b98b6a019977a4ded4981c2285b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2423 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 Lr2BH-WxxCrspU`Z diff --git a/jquery.upload/server/php/files/.gitignore b/jquery.upload/server/php/files/.gitignore deleted file mode 100644 index e24a60f..0000000 --- a/jquery.upload/server/php/files/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore -!.htaccess diff --git a/jquery.upload/server/php/index.php b/jquery.upload/server/php/index.php deleted file mode 100644 index b829745..0000000 --- a/jquery.upload/server/php/index.php +++ /dev/null @@ -1,18 +0,0 @@ -