a simple static file server, upload file to this server and access file via api http://yourdomain/files/:id
1.node.js
2.expressjs
3.coffeescript (optional for only use this project)
4.upload client using jQuery-File-Upload (optional)
1.nmp install
2.node app or supervisor app
-
upload url , example:
http://localhost:8080/uplad
-
return json data after uploaded, example:
{"name":"flamingo (13).js", "originalName":"flamingo.js", "size":79998,"type":"application/javascript", "delete_type":"DELETE", "url":"http://localhost:3000/upload/flamingo%20(13).js", "delete_url":"http://localhost:3000/upload/flamingo%20(13).js"}
-
access file api
http://localhost:8080/files/:id //:id is json data name like flamingo (13).js
-
client side upload program fragment:
require(["require","jquery","jquery.iframe-transport","jquery.fileupload"],function(require,$) { $('#fileupload').fileupload({ // Uncomment the following to send cross-domain cookies: //xhrFields: {withCredentials: true}, url:'http://192.168.1.102:8080/upload' }); $('#fileupload').fileupload('option', { maxFileSize: 5000000, acceptFileTypes: /(\.|\/)(gif|jpe?g|png|js)$/i, process: [ { action: 'load', fileTypes: /^image\/(gif|jpeg|png|js)$/, maxFileSize: 20000000 // 20MB }, { action: 'resize', maxWidth: 1440, maxHeight: 900 }, { action: 'save' } ] }); // Enable iframe cross-domain access via redirect option: $('#fileupload').fileupload( 'option', 'redirect', window.location.href.replace( /\/[^\/]*$/, '/cors/result.html?%s' ) ); $('#fileupload').fileupload({ dataType: 'json', add: function (e, data) { $.each(data.files, function (index, file) { $('<p/>').text(file.name).appendTo($("#upload-result")); }); var jqXHR = data.submit() .success(function (result, textStatus, jqXHR) { console.log("result: "+JSON.stringify(result[0])); $("#file-name").val(result[0].name); $("#file-original").val(result[0].originalName); $("#file-size").val(result[0].size); $("#file-delete_type").val(result[0].delete_type); $("#file-url").val(result[0].url); $("#file-delete_url").val(result[0].delete_url); $("#post-form").submit(); }) .error(function (jqXHR, textStatus, errorThrown) { }) .complete(function (result, textStatus, jqXHR) { console.log("result complete: "+JSON.stringify(result)); }); }, change: function (e, data) { $.each(data.files, function (index, file) { }); }, drop: function (e, data) { $.each(data.files, function (index, file) { }); }, done: function (e, data) { }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#percent').text(progress+'%') $('#progress .bar').css( 'width', progress + '%' ); } }); });