精华内容
下载资源
问答
  • LogToFile:一个简单能把日志日志打印到手机本地文件的开源代码
  •  快应用 点击事件触发录音功能录音结束保存到手机本地文件? 快应用中二维码生成 如何让用户输入内容后自动保存并生成二维码图片分享其他用户 注: 公司没有后端不涉及后端语言</p>
  • iOS客户端开启FTP,其他设备访问手机本地文件操作实现 因为项目需要,需要在手机端搭建FTP服务,让其他设备来访问手机某个路径文件夹下边的文件,实现下载功能。 主要实现借助第三方库XMFTPServer, 原来文件有修改...

    iOS客户端开启FTP,其他设备访问手机本地文件操作实现

    因为项目需要,需要在手机端搭建FTP服务,让其他设备来访问手机某个路径文件夹下边的文件,实现下载功能。
    主要实现借助第三方库XMFTPServer, 原来文件有修改,实现带用户名、密码访问连接FTP。

    首先封装FTPManager,便于其他地方使用
    
    .h 文件部分代码
    
    
    #import "XMFTPServer.h"
    @interface FTPManager : NSObject
    /**
     *  服务器ftpServer;
     */
    @property (nonatomic, strong) XMFTPServer *ftpServer;
    /**
     *  是否有用户连接
     */
    @property (nonatomic, assign) BOOL isLink;
    
    /**
     *  创建ftpServer管理类单例
     */
    + (instancetype)sharedManager;
    
    /**
     *  主动断开链接
     */
    - (void)disconnect;
    
    /**
     *  开放端口
     */
    - (void)portDispark;
    @end
    
    
    .m 文件部分代码
    
    
    @implementation FTPManager
    
    /**  */
    + (instancetype)sharedManager {
        static FTPManager *_ftpManager = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _ftpManager = [[FTPManager alloc] init];
        });
        return _ftpManager;
    }
    
    /** 主动断开链接 */
    - (void)disconnect {
        [self.ftpServer stopFtpServer];
         self.isLink = NO;
    }
    
    /** 开放端口,监听ftp用户 */
    - (void)portDispark {
        //默认开放端口为20000
        unsigned ftpPort = 20000;
        NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        self.ftpServer = [[XMFTPServer alloc] initWithPort:ftpPort withDir:basePath notifyObject:self];
        NSLog(@"FTP服务器地址:%@", [NSString stringWithFormat:@"ftp://%@:%u", [ManagerTool getIPAddress],ftpPort]);
    }
    /** 监听登录用户 */
    - (void)currentUserLogin {
        self.isLink = YES;
        NSLog(@"有FTP用户登录进来了");
    }
    @end
    
    
    

    由于开放FTP需要设置账户、密码, 需要在XMFTPServer源文件作出修改。

     XMFTPConnection.m中需要做修改, 修改代码如下
    
    
    -(void)doUser:(id)sender arguments:(NSArray*)arguments
    {
        // send out confirmation message -- 331 password required for
        if ( currentUser != nil )
        currentUser = [NSString new];
        currentUser =  [arguments objectAtIndex:1];
        NSString *outputString = [[NSString alloc] init];
        if([[arguments objectAtIndex:1] isEqualToString:@"用户名"]){
            outputString = [ NSString stringWithFormat:@"331 Password required for %@", currentUser ];
            [[NSNotificationCenter defaultCenter] postNotificationName:@"currentUserLogin" object:nil];
        }else{
            outputString = @"530 Invalid username\n";
        }
        [ sender sendMessage:outputString];
    }
    
    
    
    -(void)doPass:(id)sender arguments:(NSArray*)arguments
    {
        NSString *pass = [ arguments objectAtIndex:1 ];
        NSString *outputString = [[NSString alloc] init];
        if([pass isEqualToString:@"密码"]){
            outputString = [ NSString stringWithFormat:@"230 User %@ logged in.", currentUser ];
            
        }else{
            outputString = @"500 Invalid username or password\n";
        }
        [ sender sendMessage:outputString];
    }
    
    

    基本实现iOS开放设置携带用户名、密码的服务,其他设备可访问移动端本地文件。

    展开全文
  • 本项目编译环境在Android Studio 2.1,在手机上运行时需要注意手机系统版本必须在4.0—6.0之间(包含)。
  • cordova删除手机本地文件

    千次阅读 2016-09-29 18:00:11
    1、原本想用插件:cordova-...现在只能用HTML5的文件操作; 2、HTML5的操作: window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory+'demo/',function(root){ root.getFile('demo.txt',{create

    1、原本想用插件:cordova-plugin-file来实现,无奈没有找到方法;现在只能用HTML5的文件操作;

    2、HTML5的操作:

    window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory+'demo/',function(root){
    	root.getFile('demo.txt',{create:false},function(fentry){
    		fentry.remove(function() {
    			console.log('删除成功');
    			},function(err){
    			console.log('删除失败')
    			});
    		},function(err){console.log('删除文件出错');});
    },function(err){
    	console.log('文件夹不存');
    });
    但是有个问题就是文件是被删除了,但是也会调用失败的回调方法,不太清楚为什么!

    展开全文
  • 火狐浏览器 版本68.12.0 1.下载途径:应用宝-搜索火狐浏览器-下载 2.配置方法:输入about:config,搜索security.fileuri.strict_origin_policy,切换为false;

    火狐浏览器 版本68.12.0

    1.下载途径:应用宝-搜索火狐浏览器-下载

    2.配置方法:输入about:config,搜索security.fileuri.strict_origin_policy,切换为false;

    展开全文
  • J2ME手机本地存储文件的上传,核心代码如下: [code="java"] package com.mopietek; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException;...
    J2ME手机本地存储文件的上传,核心代码如下:



    package com.mopietek;

    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;

    import com.sun.lwuit.Display;


    public class MainMIDlet extends MIDlet{


    private MainPanel panel = null;

    protected void destroyApp(boolean unconditional)
    throws MIDletStateChangeException {
    // TODO Auto-generated method stub

    }

    protected void pauseApp() {
    // TODO Auto-generated method stub

    }

    protected void startApp() throws MIDletStateChangeException {

    Display.init(this);
    panel = new MainPanel(this);
    }

    public void exit(){

    try{
    destroyApp(false);
    }catch(MIDletStateChangeException e){
    e.printStackTrace();
    }
    this.notifyDestroyed();
    }

    }



    package com.mopietek;

    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;

    import javax.microedition.io.Connector;
    import javax.microedition.io.HttpConnection;
    import javax.microedition.io.file.FileConnection;
    import javax.microedition.io.file.FileSystemRegistry;

    import com.sun.lwuit.Command;
    import com.sun.lwuit.Component;
    import com.sun.lwuit.Container;
    import com.sun.lwuit.Dialog;
    import com.sun.lwuit.Form;
    import com.sun.lwuit.Label;
    import com.sun.lwuit.List;
    import com.sun.lwuit.TextArea;
    import com.sun.lwuit.events.ActionEvent;
    import com.sun.lwuit.events.ActionListener;
    import com.sun.lwuit.layouts.BorderLayout;
    import com.sun.lwuit.list.ListCellRenderer;
    import com.sun.lwuit.plaf.Border;

    public class MainPanel implements ActionListener{


    private final String UP_DIR = "..";
    private final String SEPS_STR = "/";
    private final int SEPS_CHAR = '/';
    private final String ROOT = "/";
    private final String RES_PREFIX = "file://";

    private final int BLOCK_SIZE = 256;

    private final String TEXT_EXT[] = {".TXT",".H",".HPP",".C",".CPPC",".INC"};
    private final String IMAGE_EXT[] = {".JPG",".JPEG",".PNG",".GIF"};
    private final String WEB_EXT[] = {".HTM",".HTML",".XML",".CSS"};

    private final String CHARACTER_CODE = "UTF-8";

    private MainMIDlet let = null;
    //主界面
    private Form listForm = null;
    //内容列表
    private List contentList = null;
    //显示文件用窗体
    private Form textForm = null;

    private TextArea text = null;

    private Form imageForm = null;

    private Command cmdExit = null;
    private Command cmdView = null; //浏览目录/文件
    private Command cmdDone = null; //退出浏览文件内容
    private Command cmdUpload = null; //上传文件

    private IconHelper helper = null;

    private String currentDir = null;

    public MainPanel(MainMIDlet mainMIDlet) {

    let = mainMIDlet;
    currentDir = ROOT;
    helper = new IconHelper();
    listForm = new Form();
    listForm.setLayout(new BorderLayout());

    cmdExit = new Command("退出");
    cmdView = new Command("浏览");
    cmdDone = new Command("返回");

    listForm.addCommand(cmdView);
    listForm.addCommand(cmdExit);
    listForm.addCommandListener(this);

    new BrowseThread(currentDir,true).start();


    }

    public void actionPerformed(ActionEvent evt) {

    Command c = evt.getCommand();
    if(c == cmdExit){
    let.exit();
    }else if(c == cmdView){
    if(contentList.size() == 0){
    new BrowseThread(ROOT,true).start();
    }else{
    final String url = ((MyContainer) contentList.getSelectedItem()).name.getText();
    if(url.endsWith(SEPS_STR) == true){
    new BrowseThread(currentDir + url,true).start();
    }else if(url.endsWith(UP_DIR) == true){
    backward();
    }else{
    new BrowseThread(currentDir + url,false).start();
    }
    }
    }else if(c == cmdDone){
    new BrowseThread(currentDir,true).start();
    }

    }

    private void backward(){
    int pos = currentDir.lastIndexOf(SEPS_CHAR, currentDir.length() -2);
    if(pos != -1){
    currentDir = currentDir.substring(0, pos +1);
    }else{
    currentDir = ROOT;
    }
    new BrowseThread(currentDir,true).start();
    }

    class MyContainer extends Container{

    private Label name;
    public MyContainer(String source){
    name = new Label(source);
    name.getStyle().setBgTransparency(0);
    addComponent(name);
    }

    }


    class MyRenderer implements ListCellRenderer{


    private Label focus;

    public MyRenderer(){

    focus = new Label();
    Border b = Border.createLineBorder(1, 0xff0000);
    focus.getStyle().setBorder(b);
    }

    public Component getListCellRendererComponent(List list, Object value,
    int index, boolean selected) {
    return (MyContainer) value;
    }

    public Component getListFocusComponent(List list) {
    return focus;
    }

    }


    class BrowseThread extends Thread{

    private String url = null;
    private boolean isDirectory = false;

    public BrowseThread(final String _url,final boolean _isDirectory){
    url = _url;
    isDirectory = _isDirectory;
    }

    public void run(){

    if(isDirectory){
    showDir(url);
    }
    else {
    showFile(url);
    }
    }

    public void showDir(final String dir){

    Enumeration em = null;
    FileConnection fc = null;

    currentDir = dir;

    listForm.removeAll();
    contentList = new List();
    contentList.setListCellRenderer(new MyRenderer());
    listForm.addComponent(BorderLayout.CENTER,contentList);

    try{
    if(dir.equals(ROOT) == true){
    //枚举根目录列表
    em = FileSystemRegistry.listRoots();
    }else{
    //非根目录
    fc = (FileConnection) Connector.open(RES_PREFIX + dir);
    em = fc.list();
    MyContainer up = new MyContainer(UP_DIR);
    up.name.setIcon(helper.getIconByExt("/"));
    contentList.addItem(up);
    }

    while(em.hasMoreElements()){

    String fileName = (String) em.nextElement();
    if(fileName.endsWith(SEPS_STR)){
    //如果为目录
    MyContainer c = new MyContainer(fileName);
    c.name.setIcon(helper.getIconByExt("/"));
    contentList.addItem(c);
    System.out.println("filName------>"+fileName);
    }else{
    //非目录(文件)
    MyContainer c = new MyContainer(fileName);
    c.name.setIcon(helper.getIconByExt(extractExt(fileName)));
    contentList.addItem(c);
    }
    }

    listForm.revalidate();
    contentList.setSelectedIndex(0,true);
    if(fc != null){
    fc.close();
    }
    }catch(Exception ex){
    ex.printStackTrace();
    }
    listForm.show();
    }

    //文件上传
    public void showFile(final String fileName){

    String url = "http://dev.mopietek.net:8080/waptest_1.0/httpup";
    String tempFileName = fileName.toUpperCase();

    byte[] data = null;

    try{
    FileConnection fc = (FileConnection) Connector.open(RES_PREFIX + fileName,Connector.READ);
    if(!fc.exists()){
    Dialog.show("Exception", "未找到文件", "ok","cancel");
    }

    if(isEndWithIn(tempFileName,IMAGE_EXT) == true){

    InputStream is = fc.openInputStream();
    ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
    byte[] tmp = new byte[4096];
    int n;

    while((n = is.read(tmp)) != -1){
    out.write(tmp, 0, n);
    out.flush();
    }

    is.close();
    out.close();
    data = out.toByteArray();

    }

    if(fc != null){
    fc.close();
    }

    }catch(Exception ex){
    ex.printStackTrace();
    }

    try {
    HttpConnection sc = (HttpConnection) Connector.open(url, Connector.READ, true);
    sc.setRequestMethod(HttpConnection.POST);
    sc.setRequestProperty("Content-Type", "application/octet-stream");
    sc.setRequestProperty("Content-Length", String.valueOf(data.length));
    OutputStream output = sc.openOutputStream();
    output.write(data);
    output.flush();
    output.close();

    } catch (IOException e) {
    e.printStackTrace();
    }


    }

    // private String getRelativeName(final String fileName){
    // int pos = fileName.lastIndexOf(SEPS_CHAR);
    // if(pos == -1){
    // return ("");
    // }
    // return (fileName.substring(pos + 1, fileName.length()));
    // }

    private boolean isEndWithIn(final String fileName,final String[] extArray){
    for(int i=0;i<extArray.length;i++){
    if(fileName.endsWith(extArray[i]) == true){
    return true;
    }
    }
    return false;
    }


    //获取扩展名(不包括'.'符号)
    private String extractExt(final String fileName){
    int pos = fileName.lastIndexOf('.');
    return (fileName.substring(pos + 1, fileName.length()).toLowerCase());
    }


    }


    }




    package com.mopietek;

    import java.io.IOException;
    import java.util.Hashtable;

    import com.sun.lwuit.Image;

    public class IconHelper {


    //图标资源
    private Image imgFolder;
    private Image unknownImage;
    private Image textImage;
    //Audio
    private Image audioImage;
    //Picture
    private Image picImage;
    private Image jpgImage;
    //Video
    private Image sgpImage;
    private Image aviImage;
    private Image wmvImage;
    private Image mpgImage;
    //Web
    private Image zipImage;
    private Image htmlImage;
    private Image xmlImage;
    //Source
    private Image cImage;
    private Image cppImage;
    private Image headerImage;
    //图标管理容器
    private Hashtable iconTable;

    public IconHelper(){
    iconTable = new Hashtable();
    try{
    //载入图标资源
    imgFolder = Image.createImage("/filetype/folder.png");
    unknownImage = Image.createImage("/filetype/unknown.png");
    textImage = Image.createImage("/filetype/text.png");
    //Audio
    audioImage = Image.createImage("/filetype/audio.png");
    //Picture
    picImage = Image.createImage("/filetype/pic.png");
    jpgImage = Image.createImage("/filetype/jpg.png");
    //Video
    sgpImage = Image.createImage("/filetype/3gp.png");
    aviImage = Image.createImage("/filetype/avi.png");
    wmvImage = Image.createImage("/filetype/wmv.png");
    mpgImage = Image.createImage("/filetype/mpg.png");
    //Web
    zipImage = Image.createImage("/filetype/zip.png");
    htmlImage = Image.createImage("/filetype/html.png");
    xmlImage = Image.createImage("/filetype/xml.png");
    //Source
    cImage = Image.createImage("/filetype/c.png");
    cppImage = Image.createImage("/filetype/cpp.png");
    headerImage = Image.createImage("/filetype/header.png");
    }catch(IOException e){
    //图标资源
    imgFolder = null;
    unknownImage = null;
    textImage = null;
    //Audio
    audioImage = null;
    //Picture
    picImage = null;
    jpgImage = null;
    //Video
    sgpImage = null;
    aviImage = null;
    wmvImage = null;
    mpgImage = null;
    //Web
    zipImage = null;
    htmlImage = null;
    xmlImage = null;
    //Source
    cImage = null;
    cppImage = null;
    headerImage = null;
    e.printStackTrace();

    }
    initTable();

    }


    private void initTable() {
    //Key为扩展名(不包括'.'符号),值为content type
    iconTable.put("/", imgFolder);
    iconTable.put("", unknownImage);
    iconTable.put("txt", textImage);
    //Source
    iconTable.put("c", cImage);
    iconTable.put("cpp", cppImage);
    iconTable.put("h", headerImage);
    //Web
    iconTable.put("html", htmlImage);
    iconTable.put("htm", htmlImage);
    iconTable.put("xml", xmlImage);
    iconTable.put("zip", zipImage);
    iconTable.put("jar", zipImage);
    //audio
    iconTable.put("mp3", audioImage);
    iconTable.put("wma", audioImage);
    iconTable.put("mid", audioImage);
    iconTable.put("wav", audioImage);
    //Picture
    iconTable.put("gif", picImage);
    iconTable.put("png", picImage);
    iconTable.put("jpg", jpgImage);
    iconTable.put("jepg", jpgImage);
    //Video
    iconTable.put("3gp", sgpImage);
    iconTable.put("avi", aviImage);
    iconTable.put("wmv", wmvImage);
    iconTable.put("mpeg", mpgImage);
    iconTable.put("mpg", mpgImage);
    iconTable.put("mp4", mpgImage);

    }

    //按照扩展名(不包括'.'符号) 获取文件的图标对象
    public Image getIconByExt(final String extension) {

    Image temp = (Image) iconTable.get(extension);
    //是否为空,则使用默认图标替代
    return ((temp == null) ? unknownImage : temp);

    }

    }



    由于是在昨天的lwuit版手机本地文件读取上修改,所以代码中用到的资源文件在上一篇中可以下载,程序中只是写实现了图片的上传的代码,其它类型文件跟图片文件上传相同。
    展开全文
  • 本应用可以浏览手机本地文件和文件夹,并且可根据用户需求对用户指定的文件进行操作。 本应用界面包含内容比较简单,只有一个ListView,一个TextView和一个Button。 ListView作用是显示目录下的文件或文件夹...
  • <input type="file" accept="image/*" capture="camera"> 会有个问题,上传的图片在手机上看会失真。 转载于:https://www.cnblogs.com/huangtao5921/p/8385645.html
  • 手机浏览器的话大部分都是支持的 (不支持的浏览器暂时无法就行兼容处理,只能想其他办法) 微信中ios内置的浏览器是完全支持的 android中必须加上accept最好也加上capture 如果是做跨平台应用,在webView中是不能...
  • 手机浏览本地文件,主要应用JSR75包对手机本地文件进行读取
  • 在程序中用fileConnection对手机本地文件进行操作。主要操作的是TXT文件和Image文件。在s60第5版操作平台上通行无障碍。
  • 一般情况下,本地文件通过电脑访问localhost(或者127.0.0)可以直接访问; 但是前几天自己仿写的Vuede 一个WebApp项目,想通过locahost:8080访问的时候访问不到文件。 直接上解决方案 找到vue项目build下得...
  • react react已经做过处理了,直接运行就可了项目,找到本地ip,打开就行了。如下 ...1、HOST(10.2.9.167)是本地的IP地址(如果运行的是http://localhost:3001则运行...2、手机和电脑连的是同一个WiFi ...
  • 文件格式为csv和mysql 导出.sql 文件,数据为2020年最新版本,数据量43万+,应该是目前最全的,根据手机号前7位进行号段匹配查询,内有手机归属地和运营商信息。
  • 工具→选项→Hbuilder→内置web服务器→修改IP地址:改成本机的IP,端口号不变→确定→浏览器运行本地文件(会发现运行路径已经由127.0.0.1改成了192.168...)→复制当前地址到草料二维码生成网站→手机端扫描 ...
  • /com.android.providers.media/databases/下,然后找到SD卡的数据库文件(一般是一个.db文件),然后输入命 令sqlite3加上这个数据库的名字就可以查询android的多媒体数据库了。.table命令可以列出所有多媒体数据库的...
  • 创建与删除本地文件,对手机的外部存储进行操作
  • public class Uit { Context s; private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm");...在调用后会在手机根目录下的msm/path/生成以时间为名称的txt文件,可以用来记录json数据,
  • 如果这恰好是你正在开发的用于移动端的页面,想要在手机上访问以便于测试验证效果,怎么访问到呢? 在webstorm的setting中是有相关可设置的,只是我试了不好用 下面有几种办法: 如果你已经安装了全局的node.js,...
  • 此类文章的优质博客也有很对,推荐Android手机文件快速扫描我这里主要是记录下文档文件扫描不出的问题: 是由于有些文档不能通过mime_type查询出来的文档 如:.docx .xls .xlsx .rar等,需要在扫描select字段中设置...
  • iOS查看手机app本地存储的文件

    万次阅读 2017-03-22 15:26:49
    审计过程中,经常会检查程序是否在本地存储了一些敏感文件,可以通过以下方法来查看手机本地存储的文件: 1.选择xcode上面的window下面的Devices 2.先在左边选中你当前的设备,然后在右下角选择你要查看的app...
  • CreateFile(Application.persistentDataPath,"FileName.txt","测试本地TEXT iamge 的存放于读取"); CreateFile(Application.persistentDataPath,"FileName.txt","测试本地TEXT iamge 的存放于读取");//------此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,451
精华内容 1,380
关键字:

手机本地文件